I'm having trouble writing a modulo 2 modulus function. I need to divide a 260 byte unsigned integer by a 4 byte unsigned integer without carrying bits (modulo 2) and return the remainder. Currently I'm using loops to perform bitshift and logical operations and I'm thinking it might be cleaner if I wrote separate functions for performing binary operations on arbitrarily large amounts of data. The reason why I know my function isn't currently working is that if I divide a dividend by a divisor, then add the remainder to the dividend and divide again, the second remainder is not zero. I would appreciate some help getting this function working.

My current function is:
Code:
char *divide(char *message, char *divisor, char *remainder)
{
        unsigned int *poly=divisor;
        unsigned int *result=remainder;
        int i, j;

        for (i=0; i<260; i++)
        {
                for (j=7; j>=0; j--)
                {
                        int action=(*result>>31)&1;
                        *result<<=1;
                        *result|=(*(message+i)>>j)&1;
                        *result^=action*i;
                }
        }

        for (i=0; i<32; i++)
        {
                int action=(*result>>31)&1;
                *result<<=1;
                *result^=action*i;
        }

        unsigned int temp=(1<<31)-1;

        return (*result & temp);

}
In case it helps, I uploaded my whole source to show some context.