void power2(GF2m& a, uint32 b)
{
	uint32 j = 0;

	uint32 i = 1 << 31;
	while ((b & i) == 0) 
	{
		i = i >> 1;
		if (i == 0) return;
	}

	b = b ^ i;
	power2(a,b);
	
	j = 0;
	while (i != 0) 
	{
		j++;
		i = i >> 1;
	}
	j--;

	i = 1;
	for (uint32 i1 = 0; i1< j; i1++)
	{
		i = i*2;
	}

	j = i;
	//j = 2 << j; 
	for (uint32 j1 = 0; j1 < j; j1++)
	{
		a.Square();
	}
}