Can someone explain this small encryption source to me? It's the TEA encryption algorithm which I got from: http://vader.brad.ac.uk/tea/tea.shtml

What does: y += (z << 4 ^ z >> 5) + z ^ sum + k[sum&3];
and: z += (y << 4 ^ y >> 5) + y ^ sum + k[sum>>11 & 3];
do?? Also why: delta=0x9E3779B9 ?? Thx!


void encipher(const unsigned long *const v, unsigned long *const w, const unsigned long * const k)
{
register unsigned long y=v[0],z=v[1],sum=0,delta=0x9E3779B9,n=32;

while(n-->0)
{
y += (z << 4 ^ z >> 5) + z ^ sum + k[sum&3];
sum += delta;
z += (y << 4 ^ y >> 5) + y ^ sum + k[sum>>11 & 3];
}

w[0]=y; w[1]=z;
}