#Ruby, 114 113 106 bytes
Ruby, 114 113 106 bytes
Because Ruby doesn't have 32-bit arithmetic, the extra mod operations caused it to almost tie with Javascript anyways despite the other byte-saving operations Ruby has...
- (-1 byte from extra semicolon)
- (-7 bytes from trimming out unnecessary mod operations and shifting stuff around)
->v,w,a,b,c,d{s=0
32.times{s+=0x9e3779b9;v+=w*16+a^w+s^w/32+b;v%=m=2**32;w+=v*16+c^v+s^v/32+d;w%=m}
[v,w]}