### The function "lowerUTF8" handles some sequences of cyrillic characters incorrectly

How to reproduce:
ClickHouse server version >=22.9

execute: 
```SELECT lowerUTF8('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')```

this will works fine and return correct result:
> абвгдеёжзийклмнопрстуфхцчшщъыьэюя

but executing this:
```SELECT lowerUTF8('КВ АМ И СЖ')```

will result:
> кв ам и сЖ

https://fiddle.clickhouse.com/34a76c87-4dfa-4fc8-808f-376b4b7a183b

last symbol "Ж" will not convert to lower case "ж"

another example:
```SELECT lowerUTF8('ЗАДАЧИ КПЗ')```

this will result:
> задачи кПз

https://fiddle.clickhouse.com/e3c6650a-52ea-4819-ae72-fad8c838d62c

penultimate symbol "П" will not convert to lower case "п"



while (src < expected_end)
                    toCase(src, expected_end, dst);
                /// adjust src_end_sse by pushing it forward or backward
                const auto diff = src - expected_end;
                if (diff != 0)
                {
                    if (src_end_sse + diff < src_end)
                        src_end_sse += diff;
                    else
                        src_end_sse -= bytes_sse - diff;
                }
            }
        }
        /// Find which offset src has now
        w && static_cast<size_t>(src - begin) >= *offset_it)
            ++offset_it;
#endif
        /// handle remaining symbols, row by row (to avoid influence of bad UTF8 symbols from one row, to another)
        while (src < src_end)
        {
            const UInt8 * row_end = begin + *offset_it;
            chassert(row_end >= src);
            while (src < row_end)
                toCase(src, row_end, dst);
            ++offset_it;
        }
    }
};
}