text:
Articles to be expanded, Characters, Agents of S.H.I.E.L.D. Characters,
Bald Hair
HYDRA Operatives
Government Storage Warehouse Inmates
HYDRA Preparatory Academy Prisoners
Enhanced Individuals
Brainwashed Characters
Characters Killed by Glenn Talbot
Absorbing Man
'Agents of S.H.I.E.L.D.' Profile: Carl Creel
For the Framework version of Carl Creel, see Carl Creel
Carl Creel
The Crusher[1]
Crusher Creel[2]
Absorbing Man[1]
Third Party[1]
The Bulletproof Assassin[1]
Michelin Man[3]
Inside Man[3]
Government's Hired Gun[4]
Messenger Boy[5]
Guinea Pig[5]
Soldier[5]
Ser. No.
23-958-NA-02
HYDRA (formerly)
ATCU (formerly)
Agents of S.H.I.E.L.D. (9 episodes)
Daredevil (mentioned)
"I didn't choose to be created by them."
"But you get to choose now."
"That's not what this feels like. That's what you want."
―Carl Creel and Hale[src]
Carl Creel was a former boxer who boxed under the name of Crusher, before he was approached by HYDRA to participate in Project Destroyer of Worlds. Overseen by Wolfgang von Strucker, Creel obtained his ability to absorb the properties of anything he touches through an early experiment with the Particle Infusion Chamber. He later appeared on S.H.I.E.L.D.'s radar and had been deemed too dangerous, so John Garrett was sent to neutralize Creel, however, Garrett faked Creel's death and recruited him into HYDRA. Creel worked for Daniel Whitehall and was ordered to steal the Obelisk, but Creel was stopped by Phil Coulson's team and handed over to Glenn Talbot for custody. Having recovered from the effects of the Obelisk, Creel then underwent months of treatment to be rid of HYDRA's brainwashing.
When Glenn Talbot had been made the leader of the ATCU, he had commissioned Creel as his personal bodyguard during the meeting to discuss the Inhumans and the threat they posed. Although S.H.I.E.L.D. had doubts about Creel, he proved himself to be trustworthy. Following Talbot's incapacitation due to an attempt on his life, Creel was recruited by Hale, one of the last remaining HYDRA leaders, to join a team with the goal of capturing the members of S.H.I.E.L.D., which had been framed for the attack on Talbot. Upon learning from Coulson that Talbot was being held prisoner, Creel then helped them both escape.
However, while still suffering from the effects of being exposed to Gravitonium by Hale, Creel was betrayed by Talbot, who had become empowered by the element and gone mad with the power. Talbot helped Creel absorb the properties of Gravitonium, transforming him into the element, then consumed Creel to gain more Gravitonium for himself.
1.1.1 Criminal Record
1.1.2 Fighting Battlin' Jack
1.2 Recruitment by HYDRA
1.2.1 Daniel Whitehall's Assassin
1.2.2 Hunting the Obelisk
1.2.3 Ambushing Glenn Talbot
1.2.4 Stealing the Obelisk
1.2.5 On the Run
1.2.6 Captured by S.H.I.E.L.D.
1.3 Military Employment
1.3.1 Showdown with Lincoln Campbell
1.3.2 Saving George Talbot
1.3.3 Recruited by General Hale
1.3.4 Capture of Hale
1.3.5 Absorbing Gravitonium
1.3.6 Rescue of Glenn Talbot
1.3.7 Showdown with Ruby Hale
1.3.8 Tormented by Voices
1.3.9 Glenn Talbot's Deception
1.4.1 Fondly Remembered
3.1.1 Duplicated Materials
3.2 Former Powers
5 Facilities
"He had a criminal record long before HYDRA got their hands on him."
"He's from the streets. He made some mistakes."
―Melinda May and Glenn Talbot[src]
Carl Creel grew up on the streets and became an accomplished fighter at a young age. His strength lead Creel to make several poor decisions resulting in him obtaining a criminal record.[3] Following several arrests, Creel had turned his attention to becoming a boxer. He gained the moniker "Crusher" in his bouts and became highly respected. While living in New York City, several of Creel's boxing matches were secretly organized by Roscoe Sweeney who would make large profits whenever Creel was victorious.[2]
Fighting Battlin' Jack
Poster of Carl "Crusher" Creel's boxing match
"We come bearing glad tidings. A match with Creel."
"Creel? How'd you pull that off?"
"Mr. Sweeney can be quite persuasive when he puts his mind to it."
―Sammy Silke and Jack Murdock[src]
During this time, Creel boxed against Jack Murdock and lost, despite the fact the fight had been fixed by Roscoe Sweeney in Creel's favor. As punishment for failing to throw the fight, Murdock was murdered shortly afterwards.[2] At sometime in the many years following, Creel was the subject of an experiment,[3] which was being carried out by Wolfgang von Strucker, a leader of HYDRA,[6] as a part of Project Destroyer of Worlds.[7] Following their successful experiment, Creel attained the ability to absorb any element and turn his skin into that same material, gaining a high victory status by using his talent to hide steel-skinned fists underneath his boxing gloves.[1]
Recruitment by HYDRA
Daniel Whitehall's Assassin
Carl Creel's personal S.H.I.E.L.D. Index file
"He must have faked Creel's termination, recruited him."
"Well, now we know he's HYDRA."
―Melinda May and Isabelle Hartley[src]
When S.H.I.E.L.D. learned of his dangerous powers, he became an Index candidate and S.H.I.E.L.D. sent John Garrett to terminate him. Garrett, an undercover HYDRA agent, chose instead to fake Creel's death and recruit him to HYDRA as a brainwashed assassin. Creel was soon recruited by Daniel Whitehall as his assassin, obeying any order given to him by Whitehall or Sunil Bakshi, although he remained indifferent to HYDRA's goals.[1]
Hunting the Obelisk
Creel fighting against the S.H.I.E.L.D. agents
"Is the package secure?"
"Uploading now."
"He expected a positive result and sent a gift along as a reward for this assignment and the next."
―Sunil Bakshi and Carl Creel[src]
Following the direct orders of Daniel Whitehall, Creel interrupted an undercover operation where a team of mercenaries was attempting to procure some valuable information from Roger Browning, a former agent of S.H.I.E.L.D., on where a level ten 0-8-4 was being held. Quietly making his way into the meeting, Creel sneaked up behind Browning and, as Isabelle Hartley noted that Browning had brought more bodyguards than he had agreed to, Creel was forced to charge forward as he snapped Browning's neck and stole the file.
Creel makes his fast escape from S.H.I.E.L.D.
When Creel killed Browning, the rest of the mercenaries immediately fired upon him; however, Creel simply absorbed the bullets and was completely unaffected. As Lance Hunter and Idaho still continued shooting at him, Creel responded by striking at Hunter, sending him falling back across the table before Creel escaped after jumping from a window. As Skye and Antoine Triplett arrived on the scene to assist Hartley's team in their fight against Creel, Triplett noted they were too late and that Creel had now vanished having jumped twenty-five feet down to ensure that he could not be captured by S.H.I.E.L.D..
Creel absorbs Musgravite into his own hand
Returning to his hideout, Creel gave the information about the 0-8-4 to his HYDRA employer, Sunil Bakshi, although he failed to give the HYDRA salute of "Hail HYDRA" as he remained uninvested. Bakshi told him that his own employer Daniel Whitehall was pleased with the update and rewarded Creel by giving him a sample of the extremely rare diamond Musgravite, which HYDRA had searched for and found specifically for him to absorb. Creel took the diamonds and watched closely as his hand transformed, enjoying all the sensation his power gave him. Creel later relaxed by absorbing some more wood.[1]
Ambushing Glenn Talbot
Absorbing Man fighting General Glenn Talbot
"Coulson, I don't think we see eye-to-eye on this. My team was up to the task when they took that freak into custody, before you took me. They have him on lockdown."
"That's the problem."
"How is that a problem?"
―Glenn Talbot and Phil Coulson[src]
Under the direct orders of Daniel Whitehall, Creel was ordered to find and capture Brigadier General Glenn Talbot to learn of the location of the Obelisk. The Absorbing Man sneaked up behind Talbot, who was out with his wife and son, but General Talbot had been warned about the upcoming attack by S.H.I.E.L.D. and defended himself against Creel, spinning around just in time and hitting his attacker in the face, much to Creel's surprise as he was not expecting any resistance. Although Creel initially began to gain the upper hand in the fight, Talbot was assisted by Melinda May who had kicked Creel away.
Absorbing Man attempting to kill Melinda May
With no orders from his HYDRA employers to keep May alive, Creel grabbed a brass ball and chain and attempted to kill the S.H.I.E.L.D. agent, while also transforming his own arm into brass at the same time to maximize his strength. With General Talbot now safely away from danger, May stood her ground against the Absorbing Man, who swung the ball and attempted to strike her with it, but May used her S.H.I.E.L.D. training to dodge Creel's blows. Using her speed May was able to avoid all of Creel's attacks until she gained an opening and then kicked Creel into the chest, knocking him back but still not defeating him due to the Absorbing Man's impressive strength.
Creel is subdued and defeated by S.H.I.E.L.D.
Before Creel could continue fighting Agent May, he was thwarted and subdued by the combined might of May and Skye, who had shot him with a Taser Projectile Launcher which had electrocuted Creel before several members of the United States Armed Forces working under the orders of General Talbot quickly arrested Creel while May made her escape from the scene. Creel, however, showed no resistance to being arrested and instead transformed his arm back from brass and raised his hands in surrender while General Talbot was taken away to his car to be taken to safety away from Absorbing Man.
Creel is locked away inside the Military Facility
Believing him to have been defeated and that he had then willingly surrendered during the brief skirmish against S.H.I.E.L.D., Creel was arrested by Brigadier General Talbot's soldiers and taken into military custody and locked inside the Government Storage Warehouse with armed Sergeants Logan and Smith watching over his glass cell with seemingly no exit for him to escape through. However, knowing that this was all part of HYDRA and Daniel Whitehall's true overall plan to obtain the Obelisk which was being stored in the same Warehouse, Creel prepared for the next stage of the plan, his own escape.[1]
Stealing the Obelisk
Creel manages to escape from his jail cell
"I turned to rubber when I touched it, thought that it would protect me but it infected me too."
"We're well aware of your condition, but believe me when I say that Mr. Whitehall wouldn't have selected you for this job if you weren't capable of completing it."
―Carl Creel and Sunil Bakshi[src]
Creel easily escaped his cell by ensuring that his guards were facing away from him before turning into glass, becoming invisible to their human eye, and tricking them. When Logan and Smith attempted to locate Creel by exploring the cell, he killed them both before searching the Warehouse. When Creel encountered a team of S.H.I.E.L.D. agents, arriving to search the facility for the Obelisk as well, Creel hid by turning into the concrete wall and followed the agents.
Creel sneaks up and attacks Isabelle Hartley
Following the team of agents through the large warehouse's many hallways, Creel encountered Isabelle Hartley, who had successfully recovered the Obelisk inside of one of the many crates that Brigadier General Glenn Talbot's soldiers had seized. Hartley, however, spotted Creel just in time and attempted to kill him with a knife, but he was able to turn his skin into steel and deflect the blade. When she then attempted to use the Obelisk to defend herself, it instantly began to engulf her hand, causing Hartley intense agony. Seeing the effects of the Obelisk and Lance Hunter appearing caused Creel to flee.
Creel killing both Isabelle Hartley and Idaho
When Hunter and Idaho attempted to get Hartley medical attention due to the intense and life-threatening pain the Obelisk was causing her, all while General Talbot's military soldiers began advancing on the S.H.I.E.L.D. team, Creel managed to get out of the facility ahead of the team. While Hunter and Idaho were still speeding towards the hospital in a desperate attempt to save Hartley's life, Creel managed to get in front of their speeding car, then turning his entire body into concrete and causing their S.H.I.E.L.D. SUV to crash into him and roll over, managing to kill Hartley and Idaho in the wreckage.
Creel prepares himself to pick up the Obelisk
Calmly walking over to the completely wreaked SUV, Creel saw the two deceased agents inside, failing to notice that Hunter had just managed to survive the crash through sheer luck. Creel then found Hartley's severed arm on the ground still clutching onto the Obelisk, as Hunter had decided to cut off her arm in a desperate attempt to stop the Obelisk from killing her. Not wishing to suffer with the same horrifically painful fate as Hartley had endured, Creel then turned his hand into rubber by touching the crashed SUV's tire and retrieved the Obelisk and calmly walked away from the crash site.[1]
Creel escaping while followed by Melinda May
"Beat it lady, I'm not into groupies."
"You misunderstand, I know you recently acquired something extremely precious and rare. Something I'm very interested in."
"Whatever you're offering, it ain't enough."
―Carl Creel and Raina[src]
Despite doing his best in attempting not to allow his skin to touch the surface of the Obelisk, Creel was affected by the Obelisk's power and felt his skin absorbing all its deadly effects. Seeking to get away and hand the Obelisk over to Daniel Whitehall as per his orders, Creel stole a van and made his escape, unaware that Melinda May was closely following him on a motorbike in order to discover who he was working for.
Creel waiting for Sunil Bakshi inside the diner
As were his orders, Creel went to the Halfway House Cafe where he waited for Sunil Bakshi to come and meet him and finally take the Obelisk off him, with Creel hoping that Bakshi could also provide an explanation on how to stop the Obelisk's infection from killing him like Isabelle Hartley. When the Waitress attempted to clear his table while he still waited for Bakshi to arrive, Creel accidentally touched her arm, causing her body to turn to stone within minutes due to the Obelisk's power which was inside Creel's skin. Creel then ran away before S.H.I.E.L.D. could arrive and take him into custody.
Creel calls Sunil Bakshi asking for assistance
Returning in his hideout, Creel desperately attempted to absorb items he had collected, such as a metal lighter and a piece of cloth, that could possibly help remove the effects of the Obelisk's deadly power, however, he had little success. Running out of options, Creel was, then contacted by Bakshi, who still wanted Creel to give him the Obelisk and promised that HYDRA would help him with his problem. Although Creel had desperately asked for help as soon as possible, Bakshi just hung up the call, resulting in the furious Creel smashing his phone and yelling at some people who were sat nearby.
Creel speaking with Raina about the Obelisk
Creel, however, was interrupted by the arrival of Raina, who explained that she was aware that he had come into possession of the Obelisk, which she wanted for her own reasons, and so she offered a Carbyne ring that would allow him to absorb its power in exchange for the 0-8-4. Creel, however, refused her offer, telling her to stay away or his HYDRA employers would have her tortured and killed, noting that he was fearful of what Daniel Whitehall would do to her pretty face if he captured her. Creel walked away, taking the ring with him while still promising not to tell Whitehall about Raina if she stayed away.[8]
Captured by S.H.I.E.L.D.
Creel has a secret meeting with Sunil Bakshi
"It's spreading all over, I can barely contain it."
"Pass me the case and I'll help you."
"Help me, and I won't do to you what I did to the waitress."
"Calm down Mr. Creel, take a deep breath."
Creel finally met with Sunil Bakshi, where Creel informed him that he was struggling to control the deadly powers of the Obelisk, as it had continued to try and consume his body and could potentially kill him in a highly painful manner. Bakshi, however, remained calm and insisted that Creel had over the case containing the Obelisk to him and in exchange he and Daniel Whitehall would help to cure him, only for Creel to threaten to kill Bakshi like he killed the Waitress if Bakshi refused to help him, so Bakshi ordered him to calm down.
Creel submits to Sunil Bakshi's mind control
Telling him to take a deep breath and clear his mind, Bakshi was able to help Creel overcome the effects of the Obelisk when he used the trigger phrase from the brainwashing method used on him, which helped Creel relax and concentrate on his arm, allowing him to safely absorb the effects of the Obelisk by focusing his absorption powers on the Carbyne ring he had previously stolen from Raina. With the threat of a slow and painful death seemingly having been dealt with, Creel told Bakshi that he was now happy to comply to HYDRA and Whitehall's wishes and he prepared to hand over the Obelisk.
Creel manages to block Lance Hunter's bullet
However, just before Creel could hand over the Obelisk onto Bakshi and walk away, their meeting was then suddenly interrupted when Creel came under fire by Lance Hunter, who was furiously attempting to avenge the deaths of his friends Isabelle Hartley and Idaho. Upon hearing a commotion as people ran in terror, Creel turned around just in time to see Hunter aiming his sniper rifle directly at Creel's head. As Hunter fired a single shot at Creel, the Absorbing Man was able to turn his skin to steel and deflected the bullet, much to the utter horror of Hunter, who was at a complete disadvantage against Creel.
Creel furiously attempts to kill Lance Hunter
While Bakshi escaped all the gunfire, Creel then got to his feet and furiously chased after Hunter as he attempted to flee inside a nearby building for safety. Creel, however, quickly caught up with his would-be assassin, smashing through a glass doorway attempting to strike him with his steel fists. Despite Hunter desperately trying to defend himself using a fire extinguisher, Creel managed to hit him with his steel fist before he was able to trap Hunter in a corner, and prepared to kill Hunter using the Obelisk's power into his hand, promising the terrified Hunter that this would be a highly painful death.
Creel's entire body is turned into stone
However, before Creel could kill Lance Hunter, he was stopped by Phil Coulson who stabbed him in the back with the modified Overkill Device which made him unable to control his own absorbing powers, allowing the 0-8-4 to take over his body and turned Creel into stone, seemingly permanently. Creel was then taken in by Coulson and was placed in a Cryostasis Chamber for the protection of others. He was turned over to Brigadier General Glenn Talbot as the peace offering from Coulson in exchange for breathing room for the activities of the new S.H.I.E.L.D. while they still fought against HYDRA.[8]
Showdown with Lincoln Campbell
Creel acts as Glenn Talbot's own bodyguard
"Do you know how you got your powers?"
"An experiment."
"Something went wrong?"
"Something went right."
―Jemma Simmons and Carl Creel[src]
During his time in prison, Creel was eventually returned into his normal human form from being frozen in stone due to the effects of the Overkill Device.[8] This time away from HYDRA also allowed Creel to finally break free of Daniel Whitehall's control over him, giving back his control over his own mind and making him regret his actions as HYDRA's assassin. Glenn Talbot saw this change in Creel and after months of training, recruited Creel as his personal bodyguard, believing he could trust Creel with his life.
Creel is ambushed by Lincoln Campbell
As Talbot saw his wife leave the airport had chosen to leave him due to Gideon Malick kidnapping their son, Creel stayed close by as Talbot had a meeting with Phil Coulson. In the middle of their conversation, Creel, who was sitting on a bench watching over Talbot, followed them to ensure their safety. Lincoln Campbell, who was there to look for anything suspicious, found Creel following the two into a parking lot. Right when Creel walked into the lot, Coulson, who believed Creel was still a HYDRA assassin, locked Talbot inside a S.H.I.E.L.D. SUV as Melinda May ordered Campbell to attack.
Creel transforms into rubber to protect himself
Before he could reveal his true intentions to ensure Talbot's safety, Creel was knocked down by Campbell's own Inhuman ability to fire a blast of electricity. In order to protect himself from further blasts of electricity fired by Campbell, Creel grabbed hold of a car's tire and transformed his body into rubber, making him immune to Campbell's electrical abilities. After throwing Campbell into a garage door, Creel walked towards Coulson, who shot him multiple times into the head. Campbell quickly recovered from the attack and again challenged Creel to finish the fight, distracting Creel from Coulson.
Creel is electrocuted by Lincoln Campbell
As Creel turned away from Coulson and went to attack the stunned Campbell again, Melinda May ambushed Creel and whacked him in the head with a metal pipe, tricking him into transforming his body into metal. Now metallic, Creel was then electrocuted by Campbell, knocking him to the ground and slowly killing him by overheating all the metal covering his body. However, Campbell was quickly ordered to stop by Coulson and May, saving Creel's life just in time. As Talbot was then freed, he rushed over and informed Coulson that Creel was his own bodyguard, picking him up and standing by his side.
Creel speaks to Leo Fitz and Jemma Simmons
With the conflict over, Creel was taken into the Playground where he was placed inside a Containment Module while the S.H.I.E.L.D. team attempted to analyze and protect themselves from his powers. Creel was visited by Leo Fitz and Jemma Simmons, the latter of which then questioned him about exactly how he obtained all of his absorption powers. Creel revealed to Simmons that he gained his powers from an experiment but would only give short answers as Simmons had asked him about what it felt to touch an Obelisk and how he survived the experience, with Creel noting that it had been highly painful.
Creel listens to music onboard Zephyr One
Despite strong objections from almost all of the S.H.I.E.L.D. agents at the Playground, a deal was eventually made between Coulson and General Talbot that Creel would be allowed to join them on their next mission, acting as Talbot's personal bodyguard, while secretly Creel would be searching for the kidnapped George Talbot. This decision mainly angered Lance Hunter who still held a deep distrust for Creel after he killed both Isabelle Hartley and Idaho while still under Daniel Whitehall's control. However, once on Zephyr One, Creel put on his headphones and listened to music, ignoring Hunter's scrutiny.[3]
Saving George Talbot
Creel going onto a secret S.H.I.E.L.D. mission
"Where's my son?"
"He's still with HYDRA. Hunter found him but he almost blew my cover; I had to hurt him, a little."
―Glenn Talbot and Carl Creel[src]
Upon arriving, Creel drove the S.H.I.E.L.D. agents through Taiwan in a van towards the mansion where the upcoming symposium where they would be discussing Inhumans and what should be done about them was being held while Glenn Talbot and Phil Coulson entered as the invited guests and searched for the mole out of the other delegates. Meanwhile, S.H.I.E.L.D. agents used fingerprint scans obtained by Phil Coulson's Prosthetic Hand to break into all of the guest's rooms, leaving Creel inside of the van with his specific orders not to leave his post as he was still under great suspicion.
Creel successfully locating George Talbot
However, Creel ignored these orders and followed the ones given to him by Talbot, to track down Talbot's son George, who was being held hostage by HYDRA to blackmail the General. However, as Creel was seen by Lance Hunter leaving his post and assumed that he was attempting to make his escape, he, therefore, left his post and began tracking down Creel. Eventually, Hunter found George Talbot in a van, trapped inside Suspension Gel; in order to ensure that Hunter could not give the S.H.I.E.L.D. team the wrong impression that Creel was working for HYDRA and jeopardizing the mission, Creel knocked him out, although he ensured that he was not badly injured.
Creel rescuing Glenn Talbot and Phil Coulson
Discovering that General Talbot and Director Coulson had just been captured by Gideon Malick's soldiers and were being prepared for execution, Creel ran to their aid. Using a pillar, Creel made his body completely into marble before attacking the two guards and helping Talbot and Coulson escape. Creel explained how he had been forced to hurt Hunter and had located George Talbot, although he was still being held by HYDRA. Before Creel could break off their handcuffs, yet another guard attacked, forcing Talbot and Coulson to run while Creel defended them and eventually defeating the guard.
Creel manages to save Lance Hunter's life
While Creel made his way through the mansion to regroup with all his allies, he found Hunter and Bobbi Morse still engaged in a gun fight with the HYDRA guards who were defending Malick, leading to Creel saving Hunter's life in the process as he had was almost ambushed. Despite this, Hunter remained adamant that they were not even, due to Creel having previously killed his friends while he had been under the mind control of Daniel Whitehall. While this happened, Talbot and Coulson rushed into the room and Creel immediately freed them from their handcuffs with his bare hands as Talbot ordered him to.
Creel and his own allies escape from HYDRA
As Creel looked on awaiting his next orders, the furious Talbot then questioned one of the guards about his son's whereabouts and when the man refused to answer, Talbot then hit him so hard he knocked him out with a single solid punch to the jaw. While Hunter and Morse were sent into Russia to track down and finally capture Malick, the rest escaped once Melinda May had located George Talbot and they returned to Zephyr One where Talbot ensured his son was safe from harm and would not be kidnapped by Malick again. With their current relationship with S.H.I.E.L.D. improved, Talbot and Creel returned to the ATCU with Creel still working as Talbot's own bodyguard.[3]
Recruited by General Hale
Creel's attempt for a quiet life is interrupted
"I told you, I'm not interested in being the government's hired gun. I'm done with that. Didn't do Talbot any good."
"Yes, well, I'm not interested in a hired gun. I'm putting together a team."
As Creel learned that Glenn Talbot had seemingly been shot and mortally wounded by Daisy Johnson and was put into a coma,[9] Creel chose to resign from working for the military as their hired gun. However, while jogging in Philadelphia, Creel was stopped by Hale who noted that she had previously promised to come and find Creel once S.H.I.E.L.D. had finally reappeared after they vanished.
Creel is recruited into a team by General Hale
Creel, however, still insisted that he was done with being the hired gun for the United States Armed Forces, noting that doing that had not done Talbot any good as he had still wound up being shot. Hale, however, explained to Creel that she had no interest in using him as a hired gun, instead telling Creel that she was putting together a team which she now of wanted to recruit him for. Despite still having doubts over what Hale's true motives for Phil Coulson and the rest of S.H.I.E.L.D. could be, Creel eventually relented and got inside Hale's car to learn what she had planned for her new team.[4]
Creel exercises while inside the HYDRA base
With Creel now on board with Hale's plan, he was taken into her safe house facility where he trained to test his strength under the watchful eye of several scientists. While Creel lifted some weights, Ruby Hale then entered the room along with Werner von Strucker and showed him Creel, reminding the young Strucker that Creel's ability to absorb the properties of anything he touched was granted to him by HYDRA and Wolfgang von Strucker's experiments. As Creel put down his weights, Strucker entered to look around while Ruby stayed inside of the doorway with Hale and commented on their latest recruits.[6]
Capture of Hale
Creel driving around with General Hale
"Get out of the car, Mr. Creel."
"Agent May."
"You're working for Hale?"
"I suggest you listen to what she has to say."
―Melinda May and Carl Creel[src]
Believing that she would soon likely be targeted and then ambushed by S.H.I.E.L.D. agents, Hale had ordered Creel to act as her personal driver while wearing C-4 as a backup and also be disguised as one of the Sleeper Mechs in order to avoid detection. While they were driving down a road, Hale's suspicions were confirmed when they inadvertently drove into the invisible Zephyr One where gas was thrown inside the car which knocked out Hale, while Creel remained silent in the car in order not to alert the agents of his identity.
Creel revealing his hidden explosive vest
When Piper and some other agents attempted to remove him from the car, however, Creel transformed his entire body into steel to make himself impossible to move due to the weight. When Piper had then informed Melinda May of this development, she came to the car with her firearm raised, announcing that she knew Creel inside the car and demanding that he exit. Creel then stepped out and turned his body back to normal, with May confronting him over working for General Hale. Creel, however, then revealed all of the C-4 he had hidden on his chest, demanding that the agents do whatever Hale wanted.
Creel stands alongside Hale and Anton Ivanov
With no other choice, Phil Coulson was forced to free Hale as Creel stood by her side for her own protection while all the other agents greeted Anton Ivanov as he arrived onboard a Quinjet and collect Hale and Creel. When Coulson accused Hale of working with terrorists like Ivanov, he also claimed that it was Ivanov who had been responsible for[10] shooting of Glenn Talbot, which Creel insisted was not the case as he noted Daisy Johnson was the one who had shot Talbot,[9] noting that he had seen the tape which seemingly confirmed this. Creel then stood by as Hale and Coulson came to a deal where Coulson would agree to come with them.
Creel attempting to reason with Phil Coulson
Once onboard the Quinjet, Hale took the controls while Ivanov ordered Coulson to put on a mask and hand over his own Prosthetic Hand to be scanned for weapons. Creel listened as Coulson tried to convince him that he was on the wrong side before turning back to Ivanov and questioning why his Sleeper Mechs did not have his face. Coulson theorized that when Aida was killed, Ivanov had lost the ability to make more Life-Model Decoys. When Coulson had claimed Hale must have something against him, she confessed that she had possession of Ivanov's severed head and brain.[10]
Absorbing Gravitonium
Creel and Ruby Hale listen to General Hale
"I've been looking forward to this one. The question is, what do you want me to do with it?"
"Whitehall, Strucker, even Talbot, they all wanted your compliance. I'm offering transformation."
"Into what?"
"A hero. Show us what you can do."
Creel stood by as Hale arranged for Phil Coulson to be taken inside of their new Headquarters where he was locked inside of his cell. Hale assured Creel that Coulson would pay for what happened to Glenn Talbot as soon as he agreed to hand over all of his Inhumans to their organization. Creel's attention was then brought towards the supply of Gravitonium which had just arrived in the facility, which Hale had agreed to allow Creel to absorb, which Creel noted he had been looking forward to.
Creel prepares to absorb the Gravitonium
When Creel questioned what she wanted from this experiment, Hale noted that Daniel Whitehall and Wolfgang von Strucker had both wanted Creel's compliance, which she wanted to transform him into a hero, using the plans of Project Destroyer of Worlds. Creel then agreed to Hale's request as he proceeded to enter the room with the Gravitonium, leaving Hale and Ruby Hale to discuss why Creel would be doing this. With the Sleeper Mechs all standing by ready to step in, Creel was then instructed to place his hand into the Gravitonium and absorb it's power into his body to test what the result would be.
Creel loses control of the Gravitonium
However, as soon as Creel came close to the Gravitonium, it reached out and grabbed ahold of him, attempting to pull Creel inside of the liquid element. As Creel desperately attempted to free himself, he was given several visions of Franklin Hall and his seeming death as he had been absorbed into the Gravitonium following an encounter with S.H.I.E.L.D.. Creel continued calling for aid as the Gravitonium lifted him into the air until the Sleeper Mechs freed him. When Hale had demanded to know exactly what had happened and what Creel had experienced, Creel explained that the Gravitonium was alive.
Creel is attacked by Franklin Hall's voice
Returning into his room, Creel was haunted by visions of Hall being absorbed into the Gravitonium as he found it impossible to lose the visions of control the Gravitonium's power. Hale eventually came to speak with Creel to learn more about what his experience had been like, as she theorized that the problem was with Creel himself. Hale explained that she and Creel were created by the old HYDRA, also noting that the Destruction of HYDRA had caused them to lose their footing. When Creel questioned her motives, Hale simply informed Creel that another test would be conducted on him soon.[5]
Rescue of Glenn Talbot
Creel wakes up from still hearing the voices
"I was brought in this way."
"From where? Any idea where this bunker's located?"
"Well, I don't know. I was kept in the dark, just like you."
―Carl Creel and Phil Coulson[src]
Creel remained unable to shake the image of Franklin Hall as he was being absorbed into the Gravitonium and felt all of the power of the element entering his mind, seeing the pain and suffering Hall had endured upon coming into contact with the Gravitonium. Creel was filled with the same hatred of Phil Coulson that the Gravitonium and Hall had felt, resulting in Creel making his decision to confront Coulson himself. Using his own absorbing powers to open the door to his cell, Creel then proceeded to subdue the Sleeper Mech guarding his door with a punch with his now steel infused fist.
Creel furiously confronting Phil Coulson
Feeling Hall's hatred, Creel immediately went to Coulson's room, as he expressed no interest in joining Hale's team, although Creel had insisted that he was not Hale's messenger. Fuelled by rage, Creel grabbed Coulson and then violently pinned him up against the wall, explaining that the Gravitonium utterly hated Coulson and wanted him dead. Coulson argued that while S.H.I.E.L.D. was not perfect, they would never do what HYDRA had done to Glenn Talbot, which confused Creel until Coulson explained that Hale was keeping Talbot as her prisoner within the facility which horrified Creel.
Creel and Coulson searching for Glenn Talbot
Creel tried to argue that Hale had just taken Talbot for medical care following his shooting, only for Coulson to note that a Sleeper Mech would pass by his room shortly and invited Creel to join him in finding Talbot's room to prove he was telling the truth. Despite still finding Coulson's story difficult to believe, Creel decided that he needed to see for himself and freed Coulson before stepping out and ripping the head of the Mech guard. Returning to Coulson, Creel warned that if he had lied, then Coulson would suffer the same fate as the guard before they made their way through the facility to locate Talbot.
Creel locates Glenn Talbot in his prison cell
As they made their way through the facility's various hallways, Creel and Coulson overheard Talbot in his room, talking loudly to himself. Creel managed to open the door and found Talbot sitting in his cell trimming his mustache and muttering to himself before questioning what Creel was doing there, clearly now suffering from some mental issues following the gunshot. Accepting that Coulson had told him the truth and Hale had lied to him, Creel helped getting Talbot to his feet while expressing his anger over the Life-Model Decoy having shot Talbot and put him in this terrible condition, only for Coulson to insist they focus on escaping and getting Talbot back to safety.
Creel continues hearing Franklin Hall's voice
As they continued moving down the corridors, with Coulson doing everything he could to try and keep Talbot quiet, Creel attempted to figure out the way out of the facility, noting that he had also been blindfolded when he arrived just as Coulson was, so he had no idea where the facility was actually located. As they kept moving, Creel suffered more visions of Hall's confrontation with S.H.I.E.L.D. which gave him incredible headaches, although Creel attempted to ignore the pain and insisted that they continue moving, which had caused Talbot to laugh at Creel for also suffering from mental issues.
Creel furiously fighting all the Sleeper Mechs
Before they could reach the exit, however, all the alarms were raised within their facility, alerting HYDRA of Creel, Coulson and Talbot's escape. Before long they were discovered by a squad of Sleeper Mechs who attempted to take them back into custody. Knowing he was the strongest of all of them, Creel insisted that the others stand behind him while he charged into battle against the Mechs, using his superior strength to subdue the robots while Coulson and Talbot also fought against their attackers. Before long, Creel and Talbot defeated all of the robots together, with Talbot shooting the final one.
Creel manages to save Phil Coulson's life
To their sudden horror, however, Creel and Talbot had discovered that Coulson had been punched directly into the chest by one of the Mechs, stopping his heart. When Talbot investigated the body, he discovered Coulson's wound from being killed by Loki had become infected. Talbot then begged Creel to do something and, despite still hearing the voice of Hall in his head, Creel managed to absorb the metal and electricity from one of the fallen Mechs and used that to restart Coulson's heartbeat, much to everybody's great relief as Creel helped Coulson and Talbot back to their feet to escape.[5]
Showdown with Ruby Hale
Creel and his allies are blocked by Ruby Hale
"I've got something for you to absorb."
"I'll hold her off."
"Kill those two. This one's mine."
―Ruby Hale and Carl Creel[src]
Making their way back into the corridors, Phil Coulson briefly paused to ensure Glenn Talbot was walking in the right direction before Creel had stopped in his tracks, having seen that Ruby Hale and her own team of the Sleeper Mechs had come to confront them all. While Coulson told General Talbot not to make jokes about Ruby's blonde hair, Creel turned the group around and told them to run as Ruby ordered her Mechs to shoot at them, with Creel keeping his friends from harm.
Creel prepares to personally battle Ruby Hale
When Creel reached the only exit he knew, he discovered that Ruby had already blocked the way, with Talbot jokingly comparing their situation to Butch Cassidy and the Sundance Kid. However, Coulson seemed to spot a possible exit for them and ordered Creel to open the steel safe door, which he did by absorbing the steel into his hand and pushing inside the door itself. Ruby, however, caught up with them and challenged Creel to a fight using her Chakram while the Mechs were ordered to kill Coulson and Talbot. Creel stayed behind and with his steel fists, managed to block Ruby's attack.
Creel is forced to battle against Ruby Hale
While Coulson and Talbot were making their escape using a teleport device which HYDRA had taken, Creel and Ruby had continued their clash throughout the facility, ending up inside the gymnasium where Creel armed himself with a wooden stick. Ruby, however, immediately used her Chakram to cut the stick in half, only for Creel to then use the sticks as his own Billy Clubs. As the pair continued to fight, Creel's considerable strength was outmatched by all Ruby's fighting ability as she managed to dodge his attacks and countered with impressive hits. When Creel did manage to kick Ruby away, she used this to her advantage by striking Creel with a dumbbell.
Creel gaining the upper hand over Ruby Hale
Despite the hit from the dumbbell, all Creel's enhancements allowed him to be almost completely unaffected as he had continued fighting against Ruby, attempting to use all of his sheer power to gain the advantage. Despite Ruby still being able to evade almost every blow Creel threw at her and countering them, Creel eventually managed to land a punch and, while Ruby was monetarily dazed, he was able to kick her across the entire gym with a powerful blow. However, Ruby had suddenly found herself with a new advantage being at a distance and prepared to throw her Chakram at Creel to kill him.
Creel becomes recaptured by General Hale
Just before Ruby to throw the blade, however, Hale entered the room with her own Sleeper Mechs and ordered her to stop. Ignoring this direct order, Ruby still launched the Blade at Creel, who was able to absorb the properties of the wooden staff in his hand which allowed the blade to imbed itself in his chest without causing serious damage to his own body. When Hale confronted Ruby over trying to kill Creel who she still wanted for experiments, Ruby had simply responded by announcing that she was the true Destroyer of Worlds, which Hale had accepted and ordered her to find Coulson and Talbot.[5]
Tormented by Voices
Creel is locked back inside of his prison cell
"It consumed them. Franklin wanted revenge, but now he's stuck with him, forever."
"They're inside the Gravitonium."
"Their minds. Their rage."
Having just been recaptured by the Sleeper Mechs, Creel was then locked back inside of his prison cell where General Hale attempted to convince him to reveal more about what he now understood about the power of Gravitonium, despite his recent betrayal.[11] Creel, however, continued to be haunted by the voices inside his head, which tormented him as he furiously began smashing his room apart while he tried to keep the voices at bay, to no avail as Creel eventually resorted to crawling up in a ball as the voices continued yelling.
Creel explains his suffering to General Hale
Before long, Hale entered Creel's room to ask if there was anything she or HYDRA could do to help him, with Creel insisting there was nothing she could do to stop all the voices from shouting inside his head. Creel explained to Hale that Franklin Hall had wanted to take his revenge against Ian Quinn and had allowed the Gravitonium to consume Quinn, resulting in them both now being trapped inside it together, constantly yelling at one another and driving Creel slowly insane. As Creel continued, Hale expressed her surprise that this was where Quinn had been for all the years he had been missing.
Creel turns to concrete and smashes his head
While Creel still remained in his corner, struggling to contain all the noise, Candice Lee then commented that Creel had only touched the Gravitonium for a brief moment, questioning what could possibly happen if Ruby Hale attempt to absorb all of it. This enraged Creel as he got up and insisted that they focus on helping him, before Creel then turned to concrete and began smashing his head against the wall, insisting that Hall and Quinn wanted their freedom. Creel was later rescued when S.H.I.E.L.D. captured Hale, with Daisy Johnson as well as Melinda May then sedating Creel to ease his suffering.[12]
Glenn Talbot's Deception
Creel is visited in the hospital by Glenn Talbot
"These voices, I thought I was stuck with them."
"You don't have to be. Let me help you."
"You have it in you? I..."
"It's okay son, I'm telling you the truth, this will make everything better... Join me."
―Carl Creel and Glenn Talbot[src]
Creel was then moved to Tony Caine's care as the voices continued to torment his mind.[13] Creel was allowed to recover in his hospital bed while the voices of Franklin Hall and Ian Quinn had still continued shouting inside his head. Eventually, Creel was joined inside his hospital room by Glenn Talbot, who had asked how he was feeling while Creel asked why Talbot was wearing a Remorath uniform before claiming that he had come to help Creel.
Creel is offered some help from Glenn Talbot
As Talbot insisted that he could help him as they would be stronger together, Creel questioned if he was feeling alright, with Talbot still insisting that he was never better. To Creel's horror, Talbot confessed to having come into contact with Gravitonium, although he insisted that this had not negatively affected him. Talbot promised to silence Hall and Quinn's voices inside Creel's head, offering his Gravitonium infused hand out to Creel, who absorbed it into his own body. Now covered with the substance, Creel found that the voices were indeed silenced at long last as Talbot had promised they would be.
Creel is completely absorbed by Glenn Talbot
Talbot questioned what Creel was feeling, and he answered that he felt peace now that Hall and Quinn had finally stopped screaming in his head. However, just as Creel began to relax, he felt himself being crushed down and sucked into Talbot's body. While Creel begged him to stop, Talbot insisted that while this moment would not be great for him, he promised that it would all be over quickly and the two of them would be stronger as one. Creel was then unable to do anything as the Gravitonium broke down his body and completely absorbed into Talbot's body himself.[14]
Fondly Remembered
"I wanted him dead, I thought I'd never forgive him but, once he was deprogrammed, once I got to know him, he was a decent man. Glad I had the chance."
―Alphonso Mackenzie to Yo-Yo Rodriguez[src]
Creel was remembered by Alphonso Mackenzie who reflected that even though at first he hated Creel for his role in Isabelle Hartley's death, Mackenzie ultimately came to view Creel as a decent human being and was glad to have known him.[14]
Creel's consciousness remained alive after he was absorbed, as he would join Franklin Hall and Ian Quinn inside the Gravitonium, although Glenn Talbot would silence all of them while honing his abilities. At the climax of the Battle of Chicago, Creel, Hall and Quinn were all killed when the Gravitonium-infused Talbot was ejected into space by Quake.[15]
"You have no idea who you're dealing with lady, you ever hear of HYDRA?"
"Name rings a bell."
"Let me give you a tip... Run."
Brought up on the streets, Carl Creel spent much of his youth as a petty criminal, using his strength to forge a career as a boxer under the supervision of Roscoe Sweeney, who would ensure that he won his fights by bribing his opponents, including Jack Murdock, into throwing the fight in order to earn money from the bets. However, after Creel developed super powers from Project Destroyer of Worlds, he was found by John Garrett and Daniel Whitehall who forced him to undergo the Faustus brainwashing, turning a small time crook into a murderer for HYDRA.
However, once freed from his brainwashing, Creel used his powers for good while aiding Glenn Talbot in his fight against Gideon Malick. Talbot gained such a strong faith in Creel that he fought to keep Creel close by despite Phil Coulson's reluctance due to Creel having murdered some of his S.H.I.E.L.D. agents while under HYDRA's control. Creel proved himself to be both loyal and a formidable ally as he rescued George Talbot during the mission, although Lance Hunter refused to forgive him for his previous crimes.
A man of few words, Creel preferred to let his fighting skills do the talking. He did not brag while overpowering Isabelle Hartley or Lincoln Campbell; he simply continued with his mission to obtain the Obelisk, only once warning Lance Hunter that his death would likely be painful. When Raina attempted to buy the Obelisk from Creel, she was warned to stay away as Creel noted that Daniel Whitehall would likely kill her as a result, showing Creel's unwillingness to cause harm to those who do not need to die in his view.
"Once Creel touches a substance, he can absorb it and somehow consciously transform the molecules of his body into that substance. He wouldn't tell us how, but he enjoys the way it feels."
―Grant Ward[src]
Elemental Mimicry: Carl Creel was able to duplicate at will the physical properties of anything he touched or that touched him, with the power having been given to Creel from the Project Destroyer of Worlds, which was designed by Daniel Whitehall. Certain items, such as flawless diamonds, were enjoyable for Creel to absorb, causing a euphoric effect in him. Creel usually used his powers to increase his own strength and durability, but he also used them sometimes to blend into his surroundings or to isolate himself from some harmful effects, such as electricity when he was attacked by Lincoln Campbell.
Duplicated Materials
Creel turned his fists into steel during his boxing matches, in order to ensure that he easily won to become a famous boxer. He also tried to absorb the properties of the steel from a lighter to counteract the effects of the Obelisk he unconsciously absorbed, but he was unable to keep the absorption. During his confrontation against Lincoln Campbell, he was tricked by Melinda May into transforming into steel, to allow Campbell's powers to subdue him.
Creel transformed his body upon contact into the lead from the bullets that Isabelle Hartley, Lance Hunter and Idaho shot at him while he retrieved Roger Browning's file about the Obelisk.
Musgravite
Creel received a rare musgravite as payment for his services to HYDRA, as Daniel Whitehall knew that his structure would give Creel pleasure when he absorbed its properties.
Following a successful assignment, Creel stayed in the truck he used as hideout, where he stored a collection of materials in order to absorb their properties. Creel also absorbed the properties of a wooden fighting staff to withstand Ruby Hale's attacks.
Being attacked by Melinda May during his attempt to capture Glenn Talbot, Creel took a piece from a guard rail to use it as a ball-and-chain weapon, absorbing the properties of the metal into his arm to increase his strength.
Creel absorbed the properties of the reinforced glass from the walls of his cell in the Government Storage Warehouse, becoming both durable and transparent, and leading the privates tasked with guarding the cell to believe he had escaped.
Creel absorbed the properties of the concrete from the walls of the warehouse to conceal himself and ambush Isabelle Hartley, using this material to protect himself against Hartley's stabs. He also absorbed the properties from the walls of the HYDRA Preparatory Academy so he could smash his head on it, hoping to release the voices he kept hearing.
Creel transformed himself into asphalt to make the vehicle where Hartley, Hunter and Idaho had escaped suffer an accident and retrieve the Obelisk that Hartley had touched.
Creel absorbed the properties of the rubber from S.H.I.E.L.D. vehicle's wheels to isolate himself from the Obelisk as he took it from Hartley's amputated arm. He also absorbed the properties of a wheel to isolate himself from Lincoln Campbell's attack.
Creel unintentionally absorbed the properties of the Obelisk as he touched it, killing whoever touched his arm with the same petrification effects that the original device had. Thanks to Sunil Bakshi, Creel managed to control this material, using it as a weapon.
Creel also tried to absorb the properties of clay to counteract the effects of the Obelisk, thinking it would be an insulating material, but the absorption failed too.
Creel finally tried to absorb the properties of a piece of cloth to counteract the effects of the Obelisk, but as the two previous absorption, it was futile.
Raina tried to persuade Creel into giving him the Obelisk by offering him a ring made of carbyne, describing it as an allotrope of carbon found in stardust, three times harder than diamond and with the ability of storing energy. Creel took the ring from Raina, and later absorbed its properties to shield himself from a direct shot to his head made by Lance Hunter and to attack him as Hunter tried to run.
Polytectic Adaptive Material
Creel was held in a containment module and absorbed the properties of the module's polytectic adaptive materials.
Creel absorbed the properties of marble during the symposium on Inhumans in Taiwan to rescue Glenn Talbot from a group of HYDRA operatives, in order to become impervious to their bullets.
Gravitonium
Glenn Talbot talked Creel into absorbing the Gravitonium, telling him that it'd stop the voices in Creel's head, but in fact Talbot just wanted Creel to create more Gravitonium so Talbot can absorb it and become more powerful.
Creel was able to absorb the wall panel made of calcium sulfate dihydrate, with a simple touch of it, he can form himself along the set properties.
Intangibility: Creel was able to phase through a metal door, by becoming the same material that the door was made from, and then opening the lock from the inside.
Former Powers
"I'm not gonna sugar coat it, pal, this is really gonna hurt."
―Carl Creel to Lance Hunter[src]
Petrification: After absorbing the effects of the Obelisk, Creel gained the ability to turn people to stone. Originally, he had no control over this ability, but, after compliance to Sunil Bakshi's words, Creel gained control to the point of desiring to use it against Lance Hunter.
"Creel was a boxer, nicknamed the Crusher. Turns out any opponent has a glass jaw when you have steel fists under your gloves."
Expert Combatant: In addition to his powers which greatly helped him while fighting, Creel was a proficient combatant, as he regularly practiced during boxing sessions. His combat skills enabled him to fight on par with the highly skilled assassin Ruby Hale when he tried to escape from the HYDRA Preparatory Academy having nearly defeated her before reinforcements arrived to hold him at gunpoint.
Obelisk: After touching the Obelisk, Creel unintentionally absorbed it, petrifying anyone who touched him. While he could originally not control this ability, Sunil Bakshi taught him to be able to use it as he pleased.
C-4 Explosives: Creel wore a C-4 vest just in case General Hale was kidnapped. When Hale was kidnapped by S.H.I.E.L.D. Creel threatened to blow everyone up unless he and Hale were let go.
Bō Staff: While helping Phil Coulson and Glenn Talbot to escape from the HYDRA Preparatory Academy, Creel wielded a Bō staff to fight against the assassin Ruby Hale. Though the staff was broken by Ruby's Chakram, Creel absorbed its properties to become more resistant to her assaults.
"I know you enjoy it, the feel of new material."
―Hale and Carl Creel[src]
Gravitonium: Creel was provided with Gravitonium by General Hale, who wanted Creel to test its properties. However, as soon as Creel touched the bulk of Gravitonium, his hand got stuck in it and he began to levitate. Once he was pulled out of the Gravitonium, Creel heard the voices of both Franklin Hall and Ian Quinn arguing in his mind. Later, Talbot allowed him to fully absorb the properties of Gravitonium using the Gravitonium Talbot had infused himself with, giving Creel the ability to transform into the element. This brought Creel relief from the torment of hearing Hall and Quinn's voices. However, Talbot then betrayed Creel and consumed him in order to gain the power of Creel's Gravitonium form.
This section requires expansion
Containment Module: To be added
Zephyr One: To be added
Quinjet: To be added
"Creel's after a deadly weapon stored inside that facility. Here's some more press. He targeted your family to force you to give up the location of that facility, but now he doesn't have to. Your people just took a man they have no idea how to contain to the one place he wants to be."
―Phil Coulson to Glenn Talbot[src]
Government Storage Warehouse: To be added
Playground: To be added
HYDRA Preparatory Academy: To be added
Roscoe Sweeney
Sammy Silke
Raina †
S.H.I.E.L.D. - Former Enemies
Phil Coulson †
Daisy Johnson/Quake
Leo Fitz
Jemma Simmons
Lincoln Campbell †
Lance Hunter - Former Attempted Victim (under coercion)
Bobbi Morse
Tony Caine
Jack Murdock † - Opponent
Roger Browning † - Victim (under coercion)
Logan † - Victim (under coercion)
Smith † - Victim (under coercion)
Antoine Triplett †
Isabelle Hartley † - Victim (under coercion)
Idaho † - Victim (under coercion)
HYDRA - Temporary Allies
Wolfgang von Strucker †
Daniel Whitehall † - Former Superior
Gideon Malick †
Hale † - Former Superior
John Garrett †
Grant Ward †
Sunil Bakshi †
Ruby Hale † - Former Ally and Attempted Killer
Candice Lee
Werner von Strucker †
Anton Ivanov †
Sleeper Mechs
Glenn Talbot † - Former Ally and Killer
Appearances for Carl Creel
Cut Man (mentioned in flashback)
Stick (mentioned in flashbacks)
Heavy is the Head
Making Friends and Influencing People (mentioned)
Aftershocks (mentioned)
Into the Ring (poster)
Daredevil (poster)
The Inside Man
Parting Shot (mentioned)
Watchdogs (mentioned)
Emancipation (mentioned)
Revelations (poster)
One Last Shot (poster)
A New Napkin (poster)
All the Comforts of Home
The Devil Complex
Rise and Shine (mentioned)
Inside Voices
The Honeymoon (mentioned)
All Roads Lead...
Option Two (mentioned)
The Force of Gravity
In the comics, Carl Creel received his powers from Loki so he could challenge Thor, and he was carrying a ball-and-chain weapon that received the same duplication powers as he did.
Creel is one of only three humans to survive physical contact with Diviner metal, and, due to his powers, the only one who did not require amputation of the affected limb. The others are Isabelle Hartley, whose death he caused after she ceased to be in danger of petrification, and Phil Coulson.
Jeph Loeb, the head of Marvel Television, was the first to put Creel in a boxing match against Jack Murdock in the comic, Daredevil: Yellow.
Antal Kalik was a stunt double for Brian Patrick Wade in the role of Absorbing Man.
The Marvel Cinematic Universe wiki has a collection of images and media related to Absorbing Man.
↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 Agents of S.H.I.E.L.D.: 2.01: Shadows
↑ 2.0 2.1 2.2 Daredevil: 1.02: Cut Man
↑ 3.0 3.1 3.2 3.3 3.4 3.5 Agents of S.H.I.E.L.D. 3.12: The Inside Man
↑ 4.0 4.1 Agents of S.H.I.E.L.D.: 5.11: All the Comforts of Home
↑ 5.0 5.1 5.2 5.3 5.4 5.5 Agents of S.H.I.E.L.D.: 5.16: Inside Voices
↑ 6.0 6.1 Agents of S.H.I.E.L.D.: 5.13: Principia
↑ Agents of S.H.I.E.L.D.: 5.15: Rise and Shine
↑ 8.0 8.1 8.2 Agents of S.H.I.E.L.D.: 2.02: Heavy is the Head
↑ 9.0 9.1 Agents of S.H.I.E.L.D.: 4.22: World's End
↑ 10.0 10.1 Agents of S.H.I.E.L.D.: 5.14: The Devil Complex
↑ Agents of S.H.I.E.L.D.: 5.17: The Honeymoon
↑ Agents of S.H.I.E.L.D.: 5.18: All Roads Lead...
↑ Agents of S.H.I.E.L.D.: 5.19: Option Two
↑ 14.0 14.1 Agents of S.H.I.E.L.D.: 5.21: The Force of Gravity
↑ Agents of S.H.I.E.L.D.: 5.22: The End
Absorbing Man on Marvel Database
Absorbing Man on Wikipedia
Retrieved from "https://marvelcinematicuniverse.fandom.com/wiki/Absorbing_Man?oldid=1248102"
Agents of S.H.I.E.L.D. Characters


text:
va ser una matemàtica estatunidenca.

Filla d'una parella de jueus austro-hongaresos immigrats a Nova York, va destacar en els seus estudis secundaris i el 1918, amb setze anys, va ingressar al Hunter College, en el qual es va graduar el 1922. A partir d'aleshores va ser professora de matemàtiques a instituts de secundària mentre, simultàniament, preparava la seva tesi doctoral que va defensar el 1930 a la Universitat de Colúmbia, sota la direcció d'Edward Kasner. Des de 1929 fins a 1934 va ser professor de l'escola estatal de professorat de Montclair (Nova Jersey) i el 1934 va tornara l'ensenyament secundari e un institut de Brooklyn. Des de 1948 fins a la seva jubilació el 1965 va ser professor de la Universitat Politècnica de Nova York.

Edna Kramer és recordada, sobre tot, pels dos llibres de història de les matemàtiques que va publicar: The Main Stream of Mathematics (1951) i The Nature and Growth of Modern Mathematics (1970), en els quals defensa una visió gradualista en l'evolució històrica dels conceptes matemàtics.

Referències

Bibliografia

Enllaços externs

Matemàtics novaiorquesos
Matemàtics del segle XX
Alumnes de la Universitat de Colúmbia
Morts a Manhattan
Persones de Manhattan
Alumnes del Hunter College
Morts de pneumònia

redpajama_set_name: RedPajamaWikipedia


text:
Biografia
Nato in Gran Bretagna, ma sempre vissuto negli Stati Uniti, Kovalic è famoso soprattutto per la serie di fumetti Dork Tower, una delle più note sul mondo dei giocatori di ruolo. È anche illustratore di giochi, come le serie Munchkin e Chez Geek, entrambe edite dalla Steve Jackson Games.
È stato anche fra i fondatori della Out of the Box Publishing.

I suoi lavori sono stati occasionalmente pubblicati anche sul New York Times e sul Washington Post.

Giochi illustrati

 10 Days series
 aBRIDGEd
 Apples to Apples series
 Backseat Drawing
 Blink
 Bosworth
 Button Men: Dork Victory
 Cash n' Guns Second Edition
 Chain Game
 Chez Geek series
 Cineplexity
 Cloud 9
 Cover Up
 Creatures and Cultists
 Creepyfreaks
 Dork 20
 Dork Tower: The Boardgame
 Dungeonville
 Easy Come, Easy Go
 Escape from Elba
 Fish Eat Fish
 Gold Digger
 Giochi della serie Illuminati: New World Order
 I coboldi mangiano i bambini!
 Letter Flip
 Letter Roll
 Mag*Blast
 Mix Up
 Giochi della serie Munchkin
 Munchkin Quest
 My Dwarfs Fly
 My Word!
 Ninja Versus Ninja
 Nutty Cups
 Party Pooper
 Pepper
 PokeTHULHU
 Quitch
 Rock
 ROFL!
 Shape Up
 ShipWrecked
 Snorta
 Squint
 Tutankhamen
 Wallamoppi
 Warhamster Rally
 Whad'Ya Know
 Wheedle
 Giochi della serie ZenBenders

Note

Altri progetti

Collegamenti esterni

 Dork Tidings: Muskrat Ramblings for Now People—Kovalic's LiveJournal


text:
//===- DIBuilderBindings.cpp - Bindings for DIBuilder ---------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines C bindings for the DIBuilder class.
//
//===----------------------------------------------------------------------===//

#include "DIBuilderBindings.h"

#include "IRBindings.h"
#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Constant.h"
#include "llvm/Support/raw_ostream.h"

using namespace llvm;

DEFINE_SIMPLE_CONVERSION_FUNCTIONS( DIBuilder, LLVMDIBuilderRef )
DEFINE_SIMPLE_CONVERSION_FUNCTIONS( MDOperand, LLVMMDOperandRef )

extern "C"
{
    LLVMContextRef LLVMGetNodeContext( LLVMMetadataRef /*MDNode*/ node )
    {
        MDNode* pNode = unwrap<MDNode>( node );
        return wrap( &pNode->getContext( ) );
    }

    LLVMMetadataRef /*DILocalScope*/ LLVMGetDILocationScope( LLVMMetadataRef /*DILocation*/ location )
    {
        DILocation* loc = unwrap<DILocation>( location );
        return wrap( loc->getScope() );
    }

    unsigned LLVMGetDILocationLine( LLVMMetadataRef /*DILocation*/ location )
    {
        DILocation* loc = unwrap<DILocation>( location );
        return loc->getLine();
    }

    unsigned LLVMGetDILocationColumn( LLVMMetadataRef /*DILocation*/ location )
    {
        DILocation* loc = unwrap<DILocation>( location );
        return loc->getColumn();
    }

    LLVMMetadataRef /*DILocation*/ LLVMGetDILocationInlinedAt( LLVMMetadataRef /*DILocation*/ location )
    {
        DILocation* loc = unwrap<DILocation>( location );
        return wrap( loc->getInlinedAt() );
    }

    LLVMMetadataRef /*DILocalScope*/ LLVMDILocationGetInlinedAtScope( LLVMMetadataRef /*DILocation*/ location )
    {
        DILocation* loc = unwrap<DILocation>( location );
        return wrap( loc->getInlinedAtScope( ) );
    }

    char const* LLVMGetDIFileName( LLVMMetadataRef /*DIFile*/ file )
    {
        DIFile* pFile = unwrap<DIFile>( file );
        return pFile->getFilename().data();
    }

    char const* LLVMGetDIFileDirectory( LLVMMetadataRef /*DIFile*/ file )
    {
        DIFile* pFile = unwrap<DIFile>( file );
        return pFile->getDirectory().data();
    }

    void LLVMSetDILocation( LLVMValueRef inst, LLVMMetadataRef location )
    {
        DILocation* loc = unwrap<DILocation>( location );
        unwrap<Instruction>( inst )->setDebugLoc( loc );
    }

    void LLVMSetDebugLoc( LLVMValueRef inst, unsigned line, unsigned column, LLVMMetadataRef scope )
    {
        unwrap<Instruction>( inst )->setDebugLoc( DebugLoc::get( line, column, unwrap<MDNode>( scope ) ) );
    }

    LLVMDIBuilderRef LLVMNewDIBuilder( LLVMModuleRef mref, LLVMBool allowUnresolved )
    {
        Module *m = unwrap( mref );
        return wrap( new DIBuilder( *m, allowUnresolved != 0 ) );
    }

    void LLVMDIBuilderDestroy( LLVMDIBuilderRef dref )
    {
        DIBuilder *d = unwrap( dref );
        delete d;
    }

    void LLVMDIBuilderFinalize( LLVMDIBuilderRef dref )
    {
        unwrap( dref )->finalize( );
    }

    LLVMMetadataRef LLVMDIBuilderCreateCompileUnit( LLVMDIBuilderRef Dref
                                                    , unsigned Lang
                                                    , const char *File
                                                    , const char *Dir
                                                    , const char *Producer
                                                    , int Optimized, const char *Flags
                                                    , unsigned RuntimeVersion
                                                    )
    {
        DIBuilder *D = unwrap( Dref );
        DICompileUnit* CU = D->createCompileUnit( Lang
                                                 , File
                                                 , Dir
                                                 , Producer
                                                 , Optimized
                                                 , Flags
                                                 , RuntimeVersion
                                                 );
        return wrap( CU );
    }

    LLVMMetadataRef LLVMDIBuilderCreateFile( LLVMDIBuilderRef Dref
                                             , const char *File
                                             , const char *Dir
                                             )
    {
        DIBuilder *D = unwrap( Dref );
        DIFile* F = D->createFile( File, Dir );
        return wrap( F );
    }

    LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock( LLVMDIBuilderRef Dref
                                                     , LLVMMetadataRef Scope
                                                     , LLVMMetadataRef File
                                                     , unsigned Line
                                                     , unsigned Column
                                                     )
    {
        DIBuilder *D = unwrap( Dref );
        DILexicalBlock* LB = D->createLexicalBlock( unwrap<DILocalScope>( Scope )
                                                  , File ? unwrap<DIFile>( File ) : nullptr
                                                  , Line
                                                  , Column
                                                  );
        return wrap( LB );
    }

    LLVMMetadataRef LLVMDIBuilderCreateLexicalBlockFile( LLVMDIBuilderRef Dref
                                                         , LLVMMetadataRef Scope
                                                         , LLVMMetadataRef File
                                                         , unsigned Discriminator
                                                         )
    {
        DIBuilder *D = unwrap( Dref );
        DILexicalBlockFile* LBF = D->createLexicalBlockFile( unwrap<DILocalScope>( Scope )
                                                           , unwrap<DIFile>( File )
                                                           , Discriminator
                                                           );
        return wrap( LBF );
    }

    LLVMMetadataRef LLVMDIBuilderCreateFunction( LLVMDIBuilderRef Dref
                                                 , LLVMMetadataRef Scope
                                                 , const char *Name
                                                 , const char *LinkageName
                                                 , LLVMMetadataRef File
                                                 , unsigned Line
                                                 , LLVMMetadataRef CompositeType
                                                 , int IsLocalToUnit
                                                 , int IsDefinition
                                                 , unsigned ScopeLine
                                                 , unsigned Flags
                                                 , int IsOptimized
                                                 , LLVMValueRef Func
                                                 , LLVMMetadataRef /*MDNode* */ TParam /*= nullptr*/
                                                 , LLVMMetadataRef /*MDNode* */ Decl /*= nullptr*/
                                                 )
    {
        DIBuilder *D = unwrap( Dref );
        DISubprogram* SP = D->createFunction( unwrap<DIScope>( Scope )
                                             , Name
                                             , LinkageName
                                             , File ? unwrap<DIFile>( File ) : nullptr
                                             , Line
                                             , unwrap<DISubroutineType>( CompositeType )
                                             , IsLocalToUnit
                                             , IsDefinition
                                             , ScopeLine
                                             , Flags
                                             , IsOptimized
                                             , Func ? unwrap<Function>( Func ) : nullptr
                                             , TParam ? unwrap<MDNode>( TParam ) : nullptr
                                             , Decl ? unwrap<MDNode>( Decl ) : nullptr
                                             );
        return wrap( SP );
    }

    LLVMMetadataRef LLVMDIBuilderCreateTempFunctionFwdDecl( LLVMDIBuilderRef Dref
                                                           , LLVMMetadataRef /*DIScope* */Scope
                                                           , char const* Name
                                                           , char const* LinkageName
                                                           , LLVMMetadataRef /*DIFile* */ File
                                                           , unsigned LineNo
                                                           , LLVMMetadataRef /*DISubroutineType* */ Ty
                                                           , bool isLocalToUnit
                                                           , bool isDefinition
                                                           , unsigned ScopeLine
                                                           , unsigned Flags /*= 0*/
                                                           , bool isOptimized /*= false*/
                                                           , LLVMValueRef /*Function* */ Fn /*= nullptr*/
                                                           , LLVMMetadataRef /*MDNode* */ TParam /*= nullptr*/
                                                           , LLVMMetadataRef /*MDNode* */ Decl /*= nullptr*/
                                                           )
    {
        DIBuilder *D = unwrap( Dref );
        DISubprogram* SP = D->createTempFunctionFwdDecl( unwrap<DIScope>( Scope )
                                                      , Name
                                                      , LinkageName
                                                      , File ? unwrap<DIFile>( File ) : nullptr
                                                      , LineNo
                                                      , unwrap<DISubroutineType>( Ty )
                                                      , isLocalToUnit
                                                      , isDefinition
                                                      , ScopeLine
                                                      , Flags
                                                      , isOptimized
                                                      , Fn ? unwrap<Function>( Fn ) : nullptr
                                                      , TParam ? unwrap<MDNode>( TParam ) : nullptr
                                                      , Decl ? unwrap<MDNode>( Decl ) : nullptr
                                                      );
        return wrap( SP );
    }

    LLVMMetadataRef LLVMDIBuilderCreateLocalVariable( LLVMDIBuilderRef Dref
                                                      , unsigned Tag
                                                      , LLVMMetadataRef Scope
                                                      , const char *Name
                                                      , LLVMMetadataRef File
                                                      , unsigned Line
                                                      , LLVMMetadataRef Ty
                                                      , int AlwaysPreserve
                                                      , unsigned Flags
                                                      , unsigned ArgNo
                                                      )
    {
        DIBuilder *D = unwrap( Dref );
        DIVariable* V = D->createLocalVariable( Tag
                                               , unwrap<DIScope>( Scope )
                                               , Name
                                               , File ? unwrap<DIFile>( File ) : nullptr
                                               , Line
                                               , unwrap<DIType>( Ty )
                                               , AlwaysPreserve
                                               , Flags
                                               , ArgNo
                                               );
        return wrap( V );
    }

    LLVMMetadataRef LLVMDIBuilderCreateBasicType( LLVMDIBuilderRef Dref
                                                  , const char *Name
                                                  , uint64_t SizeInBits
                                                  , uint64_t AlignInBits
                                                  , unsigned Encoding
                                                  )
    {
        DIBuilder *D = unwrap( Dref );
        DIBasicType* T = D->createBasicType( Name, SizeInBits, AlignInBits, Encoding );
        return wrap( T );
    }

    LLVMMetadataRef LLVMDIBuilderCreatePointerType( LLVMDIBuilderRef Dref
                                                    , LLVMMetadataRef PointeeType
                                                    , uint64_t SizeInBits
                                                    , uint64_t AlignInBits
                                                    , const char *Name
                                                    )
    {
        DIBuilder *D = unwrap( Dref );
        DIDerivedType* T = D->createPointerType( PointeeType ? unwrap<DIType>( PointeeType ) : nullptr // nullptr == void
                                                , SizeInBits
                                                , AlignInBits
                                                , Name
                                                );
        return wrap( T );
    }

    LLVMMetadataRef LLVMDIBuilderCreateQualifiedType( LLVMDIBuilderRef Dref
                                                      , uint32_t Tag
                                                      , LLVMMetadataRef BaseType
                                                      )
    {
        DIBuilder* D = unwrap( Dref );
        DIDerivedType* T = D->createQualifiedType( Tag, unwrap<DIType>( BaseType ) );
        return wrap( T );
    }

    LLVMMetadataRef LLVMDIBuilderCreateSubroutineType( LLVMDIBuilderRef Dref
                                                       , LLVMMetadataRef File
                                                       , LLVMMetadataRef ParameterTypes
                                                       , unsigned Flags
                                                       )
    {
        DIBuilder *D = unwrap( Dref );
        DISubroutineType* sub = D->createSubroutineType( File ? unwrap<DIFile>( File ) : nullptr
                                                       , DITypeRefArray(unwrap<MDTuple>(ParameterTypes))
                                                       , Flags
                                                       );
        return wrap( sub );
    }

    LLVMMetadataRef LLVMDIBuilderCreateStructType( LLVMDIBuilderRef Dref
                                                   , LLVMMetadataRef Scope
                                                   , const char *Name
                                                   , LLVMMetadataRef File
                                                   , unsigned Line
                                                   , uint64_t SizeInBits
                                                   , uint64_t AlignInBits
                                                   , unsigned Flags
                                                   , LLVMMetadataRef DerivedFrom
                                                   , LLVMMetadataRef ElementTypes
                                                   )
    {
        DIBuilder *D = unwrap( Dref );
        DICompositeType* CT = D->createStructType( unwrap<DIScope>( Scope )
                                                  , Name
                                                  , File ? unwrap<DIFile>( File ) : nullptr
                                                  , Line
                                                  , SizeInBits
                                                  , AlignInBits
                                                  , Flags
                                                  , DerivedFrom ? unwrap<DIType>( DerivedFrom ) : nullptr
                                                  , ElementTypes ?  DINodeArray(unwrap<MDTuple>(ElementTypes)) : nullptr
                                                  );
        return wrap( CT );
    }

    LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType( LLVMDIBuilderRef Dref
                                                               , unsigned Tag
                                                               , const char *Name
                                                               , LLVMMetadataRef Scope
                                                               , LLVMMetadataRef File
                                                               , unsigned Line
                                                               , unsigned RuntimeLang
                                                               , uint64_t SizeInBits
                                                               , uint64_t AlignInBits
                                                               , unsigned Flags
                                                               )
    {
        DIBuilder *D = unwrap(Dref);
        DICompositeType* type = D->createReplaceableCompositeType( Tag
                                                                   , Name
                                                                   , Scope ? unwrap<DIScope>( Scope ) : nullptr
                                                                   , File ? unwrap<DIFile>( File ) : nullptr
                                                                   , Line
                                                                   , RuntimeLang
                                                                   , SizeInBits
                                                                   , AlignInBits
                                                                   , Flags
                                                                   );
        return wrap( type );
    }

    LLVMMetadataRef LLVMDIBuilderCreateMemberType( LLVMDIBuilderRef Dref
                                                   , LLVMMetadataRef Scope
                                                   , const char *Name
                                                   , LLVMMetadataRef File
                                                   , unsigned Line
                                                   , uint64_t SizeInBits
                                                   , uint64_t AlignInBits
                                                   , uint64_t OffsetInBits
                                                   , unsigned Flags
                                                   , LLVMMetadataRef Ty
                                                   )
    {
        DIBuilder *D = unwrap( Dref );
        DIDerivedType* DT = D->createMemberType( unwrap<DIScope>( Scope )
                                                , Name
                                                , File ? unwrap<DIFile>( File ) : nullptr
                                                , Line
                                                , SizeInBits
                                                , AlignInBits
                                                , OffsetInBits
                                                , Flags
                                                , unwrap<DIType>( Ty )
                                                );
        return wrap( DT );
    }

    LLVMMetadataRef LLVMDIBuilderCreateArrayType( LLVMDIBuilderRef Dref
                                                  , uint64_t SizeInBits
                                                  , uint64_t AlignInBits
                                                  , LLVMMetadataRef ElementType
                                                  , LLVMMetadataRef Subscripts
                                                  )
    {
        DIBuilder *D = unwrap( Dref );
        DICompositeType* CT = D->createArrayType( SizeInBits
                                                 , AlignInBits
                                                 , unwrap<DIType>( ElementType )
                                                 , DINodeArray(unwrap<MDTuple>(Subscripts))
                                                 );
        return wrap( CT );
    }

    LLVMMetadataRef LLVMDIBuilderCreateVectorType( LLVMDIBuilderRef Dref
                                                  , uint64_t SizeInBits
                                                  , uint64_t AlignInBits
                                                  , LLVMMetadataRef ElementType
                                                  , LLVMMetadataRef Subscripts
                                                  )
    {
        DIBuilder *D = unwrap( Dref );
        DICompositeType* CT = D->createVectorType( SizeInBits
                                                 , AlignInBits
                                                 , unwrap<DIType>( ElementType )
                                                 , DINodeArray(unwrap<MDTuple>(Subscripts))
                                                 );
        return wrap( CT );
    }

    LLVMMetadataRef LLVMDIBuilderCreateTypedef( LLVMDIBuilderRef Dref
                                                , LLVMMetadataRef Ty
                                                , const char *Name
                                                , LLVMMetadataRef File
                                                , unsigned Line
                                                , LLVMMetadataRef Context
                                                )
    {
        DIBuilder *D = unwrap( Dref );
        DIDerivedType* DT = D->createTypedef( Ty ? unwrap<DIType>( Ty ) : nullptr
                                             , Name
                                             , File ? unwrap<DIFile>( File ) : nullptr
                                             , Line
                                             , Context ? unwrap<DIScope>( Context ) : nullptr
                                             );
        return wrap( DT );
    }

    LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange( LLVMDIBuilderRef Dref
                                                      , int64_t Lo
                                                      , int64_t Count
                                                      )
    {
        DIBuilder *D = unwrap( Dref );
        DISubrange* S = D->getOrCreateSubrange( Lo, Count );
        return wrap( S );
    }

    LLVMMetadataRef LLVMDIBuilderGetOrCreateArray( LLVMDIBuilderRef Dref
                                                   , LLVMMetadataRef *Data
                                                   , size_t Length
                                                   )
    {
        DIBuilder *D = unwrap( Dref );
        Metadata **DataValue = unwrap( Data );
        ArrayRef<Metadata *> Elements( DataValue, Length );
        DINodeArray A = D->getOrCreateArray( Elements );
        return wrap( A.get() );
    }

    LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray( LLVMDIBuilderRef Dref
                                                       , LLVMMetadataRef *Data
                                                       , size_t Length
                                                       )
    {
        DIBuilder *D = unwrap( Dref );
        Metadata **DataValue = unwrap( Data );
        ArrayRef<Metadata *> Elements( DataValue, Length );
        DITypeRefArray A = D->getOrCreateTypeArray( Elements );
        return wrap( A.get() );
    }

    LLVMMetadataRef LLVMDIBuilderCreateExpression( LLVMDIBuilderRef Dref
                                                   , int64_t *Addr
                                                   , size_t Length
                                                   )
    {
        DIBuilder *D = unwrap( Dref );
        DIExpression* Expr = D->createExpression( ArrayRef<int64_t>( Addr, Length ) );
        return wrap( Expr );
    }

    LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd( LLVMDIBuilderRef Dref
                                                  , LLVMValueRef Storage
                                                  , LLVMMetadataRef VarInfo
                                                  , LLVMMetadataRef Expr
                                                  , LLVMMetadataRef diLocation
                                                  , LLVMBasicBlockRef Block
                                                  )
    {
        DIBuilder *D = unwrap( Dref );
        Instruction *Instr = D->insertDeclare( unwrap( Storage )
                                               , unwrap<DILocalVariable>( VarInfo )
                                               , unwrap<DIExpression>( Expr )
                                               , unwrap<DILocation>( diLocation )
                                               , unwrap( Block )
                                               );
        return wrap( Instr );
    }

    LLVMValueRef LLVMDIBuilderInsertValueAtEnd( LLVMDIBuilderRef Dref
                                                , LLVMValueRef Val
                                                , uint64_t Offset
                                                , LLVMMetadataRef VarInfo
                                                , LLVMMetadataRef Expr
                                                , LLVMMetadataRef diLocation
                                                , LLVMBasicBlockRef Block
                                                )
    {
        DIBuilder *D = unwrap( Dref );
        Instruction *Instr = D->insertDbgValueIntrinsic( unwrap( Val )
                                                         , Offset
                                                         , unwrap<DILocalVariable>( VarInfo )
                                                         , unwrap<DIExpression>( Expr )
                                                         , unwrap<DILocation>( diLocation )
                                                         , unwrap( Block )
                                                         );
        return wrap( Instr );
    }

    LLVMMetadataRef LLVMDIBuilderCreateEnumerationType( LLVMDIBuilderRef Dref
                                                        , LLVMMetadataRef Scope          // DIScope
                                                        , char const* Name
                                                        , LLVMMetadataRef File           // DIFile
                                                        , unsigned LineNumber
                                                        , uint64_t SizeInBits
                                                        , uint64_t AlignInBits
                                                        , LLVMMetadataRef Elements       // DINodeArray
                                                        , LLVMMetadataRef UnderlyingType // DIType
                                                        , char const* UniqueId
                                                        )
    {
        DIBuilder* D = unwrap( Dref );
        DICompositeType* type = D->createEnumerationType( unwrap<DIScope>( Scope )
                                                        , Name
                                                        , File ? unwrap<DIFile>( File ) : nullptr
                                                        , LineNumber
                                                        , SizeInBits
                                                        , AlignInBits
                                                        , DINodeArray(unwrap<MDTuple>(Elements))
                                                        , unwrap<DIType>( UnderlyingType )
                                                        , UniqueId
                                                        );
        return wrap( type );
    }

    /// createEnumerator - Create a single enumerator value.
    //DIEnumerator createEnumerator( StringRef Name, int64_t Val );
    LLVMMetadataRef LLVMDIBuilderCreateEnumeratorValue( LLVMDIBuilderRef Dref, char const* Name, int64_t Val )
    {
        DIBuilder* D = unwrap( Dref );
        DIEnumerator* enumerator = D->createEnumerator( Name, Val );
        return wrap( enumerator );
    }

    LLVMDwarfTag LLVMDIDescriptorGetTag( LLVMMetadataRef descriptor )
    {
        DINode* desc = unwrap<DINode>( descriptor );
        return (LLVMDwarfTag)desc->getTag( );
    }

    LLVMMetadataRef LLVMDIBuilderCreateGlobalVariable( LLVMDIBuilderRef Dref
                                                       , LLVMMetadataRef Context
                                                       , char const* Name
                                                       , char const* LinkageName
                                                       , LLVMMetadataRef File  // DIFile
                                                       , unsigned LineNo
                                                       , LLVMMetadataRef Ty    //DITypeRef
                                                       , LLVMBool isLocalToUnit
                                                       , LLVMValueRef Val
                                                       , LLVMMetadataRef Decl // = nullptr
                                                       )
    {
        DIBuilder* D = unwrap( Dref );
        DIGlobalVariable* globalVar = D->createGlobalVariable( unwrap<DIScope>( Context )
                                                            , Name
                                                            , LinkageName
                                                            , File ? unwrap<DIFile>( File ) : nullptr
                                                            , LineNo
                                                            , unwrap<DIType>( Ty )
                                                            , isLocalToUnit
                                                            , unwrap<Constant>( Val )
                                                            , Decl ? unwrap<MDNode>( Decl ) : nullptr
                                                            );
        return wrap( globalVar );
    }

    LLVMValueRef LLVMDIBuilderInsertDeclareBefore( LLVMDIBuilderRef Dref
                                                 , LLVMValueRef Storage      // Value
                                                 , LLVMMetadataRef VarInfo   // DIVariable
                                                 , LLVMMetadataRef Expr      // DIExpression
                                                 , LLVMMetadataRef diLocation // DILocation
                                                 , LLVMValueRef InsertBefore // Instruction
                                                 )
    {
        DIBuilder* D = unwrap( Dref );
        Instruction* pInstruction = D->insertDeclare( unwrap( Storage )
                                                    , unwrap<DILocalVariable>( VarInfo )
                                                    , unwrap<DIExpression>( Expr )
                                                    , unwrap<DILocation>( diLocation )
                                                    , unwrap<Instruction>(InsertBefore)
                                                    );
        return wrap( pInstruction );
    }

    LLVMValueRef LLVMDIBuilderInsertValueBefore( LLVMDIBuilderRef Dref
                                                 , /*llvm::Value **/LLVMValueRef Val
                                                 , uint64_t Offset
                                                 , /*DILocalVariable **/ LLVMMetadataRef VarInfo
                                                 , /*DIExpression **/ LLVMMetadataRef Expr
                                                 , /*const DILocation **/ LLVMMetadataRef DL
                                                 , /*Instruction **/ LLVMValueRef InsertBefore
                                                 )
    {
        DIBuilder* D = unwrap( Dref );
        Instruction* pInstruction = D->insertDbgValueIntrinsic( unwrap( Val )
                                                                , Offset
                                                                , unwrap<DILocalVariable>( VarInfo )
                                                                , unwrap<DIExpression>( Expr )
                                                                , unwrap<DILocation>( DL )
                                                                , unwrap<Instruction>( InsertBefore )
                                                                );
        return wrap( pInstruction );
    }

    char const* LLVMMetadataAsString( LLVMMetadataRef descriptor )
    {
        std::string Messages;
        raw_string_ostream Msg( Messages );
        Metadata* d = unwrap<Metadata>( descriptor );
        d->print( Msg );
        return LLVMCreateMessage( Msg.str( ).c_str( ) );
    }

    void LLVMMDNodeReplaceAllUsesWith( LLVMMetadataRef oldDescriptor, LLVMMetadataRef newDescriptor )
    {
        MDNode* o = unwrap<MDNode>( oldDescriptor );
        Metadata* n = unwrap<Metadata>( newDescriptor );
        o->replaceAllUsesWith( n );
    }

    LLVMMetadataRef LLVMDILocation( LLVMContextRef context, unsigned Line, unsigned Column, LLVMMetadataRef scope, LLVMMetadataRef InlinedAt )
    {
        DILocation* inlinedAtLocation = InlinedAt ? unwrap<DILocation>( InlinedAt ) : nullptr;
        DILocation* pRetVal;
        pRetVal = DILocation::get( *unwrap( context )
                                    , Line
                                    , Column
                                    , unwrap<DILocalScope>( scope )
                                    , inlinedAtLocation
                                    );

        return wrap( pRetVal );
    }

    LLVMBool LLVMSubProgramDescribes( LLVMMetadataRef subProgram, LLVMValueRef /*const Function **/F )
    {
        DISubprogram* pSub = unwrap<DISubprogram>( subProgram );
        return pSub->describes( unwrap<Function>( F ) );
    }

    LLVMMetadataRef LLVMDIBuilderCreateNamespace( LLVMDIBuilderRef Dref, LLVMMetadataRef scope, char const* name, LLVMMetadataRef file, unsigned line )
    {
        DIBuilder* D = unwrap( Dref );
        DINamespace* pNamespace = D->createNameSpace( scope ? unwrap<DIScope>( scope ) : nullptr
                                                    , name
                                                    , file ? unwrap<DIFile>( file ) : nullptr
                                                    , line
                                                    );
        return wrap( pNamespace );
    }

    LLVMMetadataKind LLVMGetMetadataID( LLVMMetadataRef /*Metadata*/ md )
    {
        Metadata* pMetadata = unwrap( md );
        return (LLVMMetadataKind)pMetadata->getMetadataID( );
    }

    uint32_t LLVMMDNodeGetNumOperands( LLVMMetadataRef /*MDNode*/ node )
    {
        MDNode* pNode = unwrap<MDNode>( node );
        return pNode->getNumOperands( );
    }

    LLVMMDOperandRef LLVMMDNodeGetOperand( LLVMMetadataRef /*MDNode*/ node, uint32_t index )
    {
        MDNode* pNode = unwrap<MDNode>( node );
        return wrap( &pNode->getOperand( index ) );
    }

    LLVMMetadataRef LLVMGetOperandNode( LLVMMDOperandRef operand )
    {
        MDOperand const* pOperand = unwrap( operand );
        return wrap( pOperand->get( ) );
    }

    /*DISubProgram*/ LLVMMetadataRef LLVMDILocalScopeGetSubProgram( LLVMMetadataRef /*DILocalScope*/ localScope )
    {
        DILocalScope* pScope = unwrap<DILocalScope>( localScope );
        return wrap( pScope->getSubprogram( ) );
    }

    /*Function*/ LLVMValueRef LLVMDISubProgramGetFunction( LLVMMetadataRef /*DISubProgram*/ subProgram )
    {
        DISubprogram* pSub = unwrap<DISubprogram>( subProgram );
        return wrap( pSub->getFunction( ) );
    }
}

redpajama_set_name: RedPajamaGithub