EEPROM read isn't working

You may study this system and the associated codes; some of the information could be helpful to solve your problem. In this system, the control program reads ASCII Codes of consecutive 4-digit entered from a keypad, stores the value in a character array and EEPROM along with null-byte. One may enter as many code blocks as he wishes, the limit is set in the program via the variable total. At the end of code entry, the codes are read from the EEPROM and are displayed on th bottom line of the LCD.

#include<EEPROM.h>
#include<Keypad.h>
#include<LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const byte rows = 4, cols = 4;
char storage[5];
int adr = 0x0010;
int arrayTracker = 0, check = 0;
int counter = 0;
int total = 0;

char keys[rows][cols] = {
 
 {'1','2','3','a'},
 {'4','5','6','b'},
 {'7','8','9','c'},
 {'*','0','#','d'}
};

byte rPins[rows] = {9,8,7,6}, cPins[cols] = {5,4,3,2};

Keypad keypad = Keypad(makeKeymap(keys),rPins,cPins,rows,cols);

void setup()
{
 lcd.init();
 lcd.backlight();
 lcd.print("Enter Code:");
 lcd.setCursor(0,1);
}

void loop()
{
  lcd.setCursor(0, 0);
  lcd.print("Enter Code:");
  char input = keypad.getKey();
  if(input)
  {
    storage[arrayTracker] = input;
    lcd.setCursor(arrayTracker, 1);
    lcd.print(storage[arrayTracker]);
    arrayTracker++;   
    counter = arrayTracker; 
   }
   
   if(counter == 4)
   {
      storage[arrayTracker] = 0x00;//null-byte
      delay(2000);
      lcd.clear();
      EEPROM.put(adr, storage);
      adr = adr + 5;
      arrayTracker = 0x00;
      counter = 0x00;
      check = 0x00;
      total++;
      if (total == 4)
      {
        adr = 0x0010;
        lcd.setCursor(0, 0);
        lcd.print("EEPROM Reading!");
        lcd.setCursor(0, 1);
        for (int i = 0; i<4; i++)
        {
          EEPROM.get(adr, storage);
          lcd.print(storage);
          adr = adr +5;
        }
        while(1);
      }
    }
}