while нет никакого смысла использовать без проверки условия (true).
нужно делать что-то в цикле и периодически проверять это условие.
например, не достигнут ли конец файла и т.д.
установите себе вторую операционку типа Колибри, она вся написана на ассемблере, там есть компилятор и т.д. кроме того, найдите пару учебников и справочников по ассемблеру. и начинайте делать пробные небольшие программы. постепенно научитесь!
не надо всё смешивать в одну кучу mul и shr. рассмотрим сдвиги:
представим например число 1 в двоичном исчислении 8 бит: 00000001.
что будет если сдвинуть биты влево? - что в десятичной системе будет 2.
ещё сдвинем влево - получится 00000100 - в десятичной это 4.
вот получается и умножение при сдвиге влево. а при сдвиге вправо - деление
а если ошибочно исправить файл? сайт ляжет.
лучше ветку develop связать с неким тестовым сайтом (локальным или удалённым), там проводить все изменения, тестировать, затем сливать с веткой master. это будет храниться на GitHub/GitLab, а уже оттуда надо будет скачивать изменения ветки master на основной сайт командой git pull
для начала нужно исправить ошибку - команды pop должны вызываться в обратном порядке, по сравнению с командами push, а у Вас они идут НЕ в обратном порядке
Нужно использовать не куки, а сессии. Куки отправляются из браузера, поэтому легко могут быть подделаны хакером, который получит полный доступ в админку за пару минут, а переменные сессии хранятся на сервере, куда у хакера доступа нет.