### 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 "п"



{
                const auto is_not_case
                    = _mm_and_si128(_mm_cmpgt_epi8(chars, v_not_case_lower_bound), _mm_cmplt_epi8(chars, v_not_case_upper_bound));
                const auto mask_is_not_case = _mm_movemask_epi8(is_not_case);
                /// everything in correct case ASCII
                
                    erpret_cast<__m128i *>(dst), chars);
                else
                {
                    /// ASCII in mixed case
                    sk` only where necessary, zero out elsewhere
                    const auto xor_mask = _mm_and_si128(v_flip_case_mask, is_not_case);
                    /// flip case by applying calculated mask
                     = _mm_xor_si128(chars, xor_mask);
                    /// store result back to destination
                    erpret_cast<__m128i *>(dst), cased_chars);
                }
                src += bytes_sse;
                dst += bytes_sse;
            }
            else
            {
                /// UTF-8
                size_t offset_fr = src - begin;
                while (offset_fr >= *offset_it)
                    ++offset_it;
                /// Do not allow one row influence another (since row may have invalid sequence, and break the next)
                const UInt8 * row_end = begin + *offset_it;
                chassert(row_end >= src);
                const UInt8 * expected_end = std::min(src + bytes_sse, row_end);