**Describe the bug**

`sumIf` returns incorrect results in some cases with Nullable arguments.

**How to reproduce**

* Which ClickHouse server version to use
Latest master/arcadia version

* Queries to run that lead to unexpected result
```sql
:) select sumIf(toFloat64OrZero(b), a = 0) as r1, sumIf(cast(b as Float), a = 0) as r2, sum(if(a = 0, toFloat64OrZero(b), 0)) as r3 from (select arrayJoin([1, 2, 3, NULL]) as a, toNullable('10.0') as b)

SELECT
    sumIf(toFloat64OrZero(b), a = 0) AS r1,
    sumIf(CAST(b, 'Float'), a = 0) AS r2,
    sum(if(a = 0, toFloat64OrZero(b), 0)) AS r3
FROM
(
    SELECT
        arrayJoin([1, 2, 3, NULL]) AS a,
        toNullable('10.0') AS b
)

Query id: 2e4e320d-e52a-4514-bc6f-118485558191

┌─r1─┬─r2─┬─r3─┐
│ 10 │  0 │  0 │
└────┴────┴────┘
```
**Expected behavior**

All results are 0.

**Additional context**

It breaks when null values in Nullable column are compared with `assumeNotNull` from this column.
It also only breaks when first argument is Nullable too.


{
        
        llvm::IRBuilder<> & b = static_cast<llvm::IRBuilder<> &>(builder);
        size_t arguments_size = arguments_types.size();
        DataTypes non_nullable_types;
        std::vector<llvm::Value * > wrapped_values;
        std::vector<llvm::Value * > is_null_values;
        non_nullable_types.resize(arguments_size);
        wrapped_values.resize(arguments_size);
        is_null_values.resize(arguments_size);
        for (size_t i = 0; i < arguments_size; ++i)
        {
            const auto & argument_value = argument_values[i];
            if (is_nullable[i])
            {
                auto * wrapped_value = b.CreateExtractValue(argument_value, {0});
                if constexpr (null_is_skipped)
                    is_null_values[i] = b.CreateExtractValue(argument_value, {1});
                wrapped_values[i] = wrapped_value;
                non_nullable_types[i] = removeNullable(arguments_types[i]);
            }