#include <stdint.h>
#include <stdio.h>
static uint32_t ror32Good(uint32_t x, uint32_t n){
n &= 0x1F;
return n ? x>>n | x<<(32-n) : x;
}
static uint32_t ror32Fail(uint32_t x, uint32_t n){
return n &= 0x1F ? x>>n | x<<(32-n) : x;
}
int main(){
printf("Rotating 0xDEADBEEF right by 16.\n"); printf("Expecting: beefdead\n"); printf("ror32Good: %x\n", ror32Good
(0xDEADBEEFU
, 16U
)); printf("ror32Fail: %x\n", ror32Fail
(0xDEADBEEFU
, 16U
)); return 0;
}
I2luY2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCnN0YXRpYyAgICAgICB1aW50MzJfdCByb3IzMkdvb2QodWludDMyX3QgeCwgdWludDMyX3Qgbil7CgluICY9IDB4MUY7CglyZXR1cm4gbiA/IHg+Pm4gfCB4PDwoMzItbikgOiB4Owp9CnN0YXRpYyAgICAgICB1aW50MzJfdCByb3IzMkZhaWwodWludDMyX3QgeCwgdWludDMyX3Qgbil7CglyZXR1cm4gbiAmPSAweDFGID8geD4+biB8IHg8PCgzMi1uKSA6IHg7Cn0KCgppbnQgbWFpbigpewoJcHJpbnRmKCJSb3RhdGluZyAweERFQURCRUVGIHJpZ2h0IGJ5IDE2LlxuIik7CglwcmludGYoIkV4cGVjdGluZzogYmVlZmRlYWRcbiIpOwoJcHJpbnRmKCJyb3IzMkdvb2Q6ICV4XG4iLCByb3IzMkdvb2QoMHhERUFEQkVFRlUsIDE2VSkpOwoJcHJpbnRmKCJyb3IzMkZhaWw6ICV4XG4iLCByb3IzMkZhaWwoMHhERUFEQkVFRlUsIDE2VSkpOwoJcmV0dXJuIDA7Cn0K