Resolvendo sistemas de equações XOR

Eu tenho que resolver um sistema que consiste em 32 xor equações, cada uma envolvendo 15 de 32 variáveis. Um ficaria assim:

i[0] = p[0] ^ p[4] ^ p[5] ^ p[10] ^ p[11] ^ p[20] ^ p[21] ^ p[22] ^ p[23] ^ p[25] ^ p[26] ^ p[27] ^ p[28] ^ p[30] ^ p[31]

i [n] e p [n] sendo inteiros de 16 bits.

Então, como eu entendo, eu acabaria com uma matriz 32x32 (contendo apenas 1s e 0s) e um vetor de 32 resultados.

Aparentemente, a eliminação gaussiana é o que eu preciso, mas não consigo me preocupar com o problema, alguém poderia me dar algumas dicas sobre como resolver esse problema?

EDIT: aqui está uma solução em C ++

void SolveLinearSystem(u8 A[32][32], u8 B[32])
{
int N = 32;
for (int K = 0; K < N; ++K) 
{
    if( A[K][K] == 0 ) 
    {
        for(int i = K + 1; i<N ; ++i ) 
        { 
            if(A[i][K] != 0) 
            {
                for( int L = 0; L < N; ++L )
                {
                    int s = A[K][L];
                    A[K][L] = A[i][L];
                    A[i][L] = s;
                }
                int s = B[i];
                B[i] = B[K];
                B[K] = s;
                    break;
            }
        }
    }

    for( int I = 0; I<N; ++I)
    {
        if( I!=K )
        { 
            if( A[I][K] ) 
            { 
                int M = 0;
                for( M=K; M<N; ++M ) 
                { 
                    A[I][M] = A[I][M] ^ A[K][M]; 
                }
                B[I] = B[I] ^ B[K];
            }
        }
    }
}
}

questionAnswers(2)

yourAnswerToTheQuestion