Some corrections:
In step 4, it's not quite correct that multiple copies of the same term are deleted. It's just that we're doing calculations mod 2, so two copies (or any even number of copies) of the same term cancel.
In step 6, moreover, the problem is that taking the number mod 100011011 is not the same thing as taking a polynomial modulo another polynomial. The difference is that when doing the long division, you don't carry subtractions.
Just converting the C code at the end of the article should work well enough. Here it is (assuming the two numbers to be multiplied are stored in binary in L1 and L2):
{0,0,0,0,0,0,0,0}→L₃
For(I,0,7)
If L₂(8)
L₃ xor L₁→L₃
L₁(1)→H
augment(ΔList(cumSum(L₁)),{0})→L₁
If H
L₁ xor {0,0,0,1,1,0,1,1}→L₁
augment({0},L₂→L₂
8->dim(L₂)
End
L₃
At the end, to add numbers, use xor, not +.
Edit: in fact, since you're keeping a running total, the easiest way to compute A*B+C*D+E*F+G*H using this code is to initialize L₃ to all zeroes at the beginning, before the first multiplication, then keep using L₃ (without resetting it to zeroes) for all the other multiplications.