{
            if (unlikely(ip + 1 >= input_end))
                return false;
            continue_read_length();
        }
        
        copy_end = op + length;
        
        
        
        
        
        
        
        
        
        
        if (unlikely(copy_end > output_end))
            return false;
        
        real_length = 0;
        static_assert(copy_amount == 8 || copy_amount == 16 || copy_amount == 32);
        if constexpr (copy_amount == 8)
            real_length = (((length >> 3) + 1) * 8);
        else if constexpr (copy_amount == 16)
            real_length = (((length >> 4) + 1) * 16);
        else if constexpr (copy_amount == 32)
            real_length = (((length >> 5) + 1) * 32);
        if (unlikely(ip + real_length >= input_end + ADDITIONAL_BYTES_AT_END_OF_BUFFER))
            return false;