Assignment 5: Read, understand, and modify parameters in Assembly code We are playing an RPG game. Due to insufficient preparation, the character is facing the final dragon with a meager amount of hit points, flimsy armor, and non-existent shield. The values for the character's hit points ( 100 ), armor ( 20 ), and shield ( 10 ) as well as the dragon's attack ( 1080 ) are used to calculate the final attack. The equation for this calculation is: remain = hp + armor * 2 + shield * 3 - dragon_hit. If remain is greater than e, the character will survive and win the game. Otherwise, the character dies. Since it is too late to replay the lengthy game, we decide to adjust the object file dungeon.o stored inside the test directory to our advantage. Your task is to write a program called mod.c that can modify dungeon.o such that we can win the game. As a head start, you are provided with a read_binary.c that can read dungeon.o and write (currently unmodified) the resulting bytes to another binary file called dungeon_mod.o. Hint • Actually run the program by compile dungeon_mod.o to an executable named dungeon : gcc -o dungeon path- to-dungeon.o • Observe dungeon.o using objdump to figure out what which codes/hex values correspond to which parameters and then using hexdump to know exactly where these values are in the binary stream. • Create a mod.c that is based on read_binary.c such that mod.c can modify dungeon.o to create dungeon_mod.o. The new dungeon_mod.o will generate an executable that allows you to win the game.