How it works this code?

uint8_t *x;//somewhere above
//then comes castes and bitwise op:
 uint32_t* x32 = (uint32_t*)x;
 x32[ 0] ^= 0x00000000^r;
 x32[ 2] ^= 0x00000010^r;
 x32[ 4] ^= 0x00000020^r;
 x32[ 6] ^= 0x00000030^r;
 x32[ 8] ^= 0x00000040^r;
 x32[10] ^= 0x00000050^r;
 x32[12] ^= 0x00000060^r;
 x32[14] ^= 0x00000070^r;


r - value is uint32_t, not a pointer.
Can't understand what will happen during casting to uint8 uint32, help pliz
Initially allocated 16 bytes of memory for x... and there are already appearing 14 index, i.e., out of the 16 bytes..... don't understand.
June 10th 19 at 14:30
1 answer
June 10th 19 at 14:32
Someone's confused, because this code need to be allocated 60 bytes, probably stands out for 64.
This code takes a byte array
|00|01|02|..|56|57|58|59|
takes it in 4 bytes of 4 bytes converts, xora in this group all the bits from r except a certain. Then is shifted by 8 bytes, takes the next 4 bytes, etc.

Find more questions by tags C