c – `UINT8` array conversion (` unsigned char`) to `Float32` array (` float`) with AVX2

Given table of entry of UINT8 (unsigned character) with numElements how could one efficiently convert to a table of Float32 (fleet)?

For example, here is a vanilla code for this (Warning, there is an operation of scaling):

void ConvertFromUint8 (float * mO, unsigned character * mI, int numElements, float scalingFctr)
{
int ii;
for (ii = 0; ii <numElements; ii ++) {
mO[ii] = (float) (mI[ii]) * scalingFctr;
}
}

Or mO is the exit chart.

I need a code that uses up to AVX2 the intrinsic ones.
The goal is to produce a faster code than the vanilla example, as in Compiler Explorer – ConvertFromUint8.