Ja bym powiedział, że ten trzeci if sie nigdy nie wykona bo pierwszy else if jest dopełnieniem pierwszego if (może jaśniej jeżeli pierwszy if się nie wykona to ten else if już musi bo ma przeciwny warunek) a więcej póki co nie moge pomóc bo nie wiem co ten algorytm ma robić i co oznaczają zmienne np il_wor_mur, a do tego skoro zmiennej a nie zmieniasz to nie ma sensu przesyać jej przez referencje
EDIT:
Skoro wszędzie są instrukcje break; to nie ma sensu używać pętli for bo i tak się tylko raz wykona chyba, że dasz continue;