I am playing with this code to see if I can get to work so far so good but I was curious what does this error message mean:

overloaded function differs only by return type from 'char *itoa(int,char *,int)'

it is within this code:
Code:
void itoa( int32 num, int8  *alpha, int32 radix )
{
	if( radix == 10 )
	{
		sprintf(alpha, "%i", num);
	}
	else if( radix == 16 )
	{
		sprintf(alpha, "%X", num);
	}
}

int8 *oldModString(int32 modifier, const int8  *pbDataOne, int32 length)
{
	int8  leading[3];
	int32 ileading;
	int8 * tempStr = NULL;
	int8 * ret;
	int32 i = 0;

	itoa(modifier/2, leading, 10);
	ileading = atoi(leading);
	tempStr = (int8 *) malloc(8);
	ret = (int8 *) malloc(length);
	memset(tempStr, 0, 8);
	tempStr[0] = 0;

	if( (modifier+1)%2 == 0 ) {
		tempStr[0] = (int8)((ileading<<4) + 8);
	}
	else {
		tempStr[0] = (int8)(ileading<<4);
	}

	for(i=0; i<(length>>3); i++)
	{
		xorStringRounds(ret+i*8, tempStr, pbDataOne+i*8, 8);
	}
	free(tempStr);
	return ret;
}

int main(int argc, char **argv) {
	int8 data[32];

	memset(data, 0x0A, sizeof(data));
	int8 *resp = oldModString(0xFF, data, sizeof(data));

	free(resp);

	return 0;
}
I put the reminder of the code underneath just in case if it needs to be clear to understand. I will keep looking for another solution.