функция должна возвращать всегда 1 значение через 1 регистр. если у тя два значения (да-отработала, то вот еще 1 возвращаемое значение -адресс), то так не надо делать. при этом усложняется код и используется больше объектов для проверки значения функции
если возвращаешь булево значение, то в других регистрах ничего неидолжнотпередаваться. в твоем случае лучше убить сразу двух зайцев, возвращай все в rax, а не через флаг, в CF не поместится адрес
Имхо сигнализировать ошибку через cf нормальный, даже в плюсах предлагали в качестве реализации исключений, и в мишке возможность обработки таких случаев