#include <stdio.h>
#include <stdint.h>
#define LOW(exp) ((exp) & 0x00FF)
#define HIGH(exp) (((exp) & 0xFF00) >> 8)
uint16_t prng(uint16_t v) {
uint16_t low = LOW(v);
uint16_t high = HIGH(v);
uint16_t mul_low = low * 5;
uint16_t mul_high = high * 5;
// need to check for overflow, since final addition is adc as well
uint16_t v1 = LOW(mul_high) + HIGH(mul_low) + 1;
uint8_t carry = HIGH(v1) & 0b00000001;
uint16_t v2 = (LOW(v1) << 8) + LOW(mul_low);
return (v2 + 0b00010001 + carry);
}
int main()
{
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCiNkZWZpbmUgTE9XKGV4cCkgICgoZXhwKSAmIDB4MDBGRikKI2RlZmluZSBISUdIKGV4cCkgKCgoZXhwKSAmIDB4RkYwMCkgPj4gOCkKCgp1aW50MTZfdCBwcm5nKHVpbnQxNl90IHYpIHsKCiAgICB1aW50MTZfdCBsb3cgID0gTE9XKHYpOwogICAgdWludDE2X3QgaGlnaCA9IEhJR0godik7CgogICAgdWludDE2X3QgbXVsX2xvdyAgPSBsb3cgICogNTsKICAgIHVpbnQxNl90ICBtdWxfaGlnaCA9IGhpZ2ggKiA1OwoKICAgIC8vIG5lZWQgdG8gY2hlY2sgZm9yIG92ZXJmbG93LCBzaW5jZSBmaW5hbCBhZGRpdGlvbiBpcyBhZGMgYXMgd2VsbAogICAgdWludDE2X3QgdjEgICAgPSBMT1cobXVsX2hpZ2gpICsgSElHSChtdWxfbG93KSArIDE7CiAgICB1aW50OF90ICBjYXJyeSA9IEhJR0godjEpICYgMGIwMDAwMDAwMTsKCiAgICB1aW50MTZfdCB2MiA9IChMT1codjEpIDw8IDgpICsgTE9XKG11bF9sb3cpOwoKICAgIHJldHVybiAodjIgKyAwYjAwMDEwMDAxICsgY2FycnkpOwp9CgppbnQgbWFpbigpCnsKICAgIHByaW50ZigiJWRcbiIsIHBybmcoMTMwNTQpKTsKICAgIHByaW50ZigiJWRcbiIsIHBybmcoMTMwNTUpKTsKICAgIHByaW50ZigiJWRcbiIsIHBybmcoMTMwNTYpKTsKICAgIHByaW50ZigiJWRcbiIsIHBybmcoMTMwNTcpKTsKCiAgICBwcmludGYoIi0tLVxuIik7CgogICAgcHJpbnRmKCIlZFxuIiwgcHJuZygxMzMxMCkpOwogICAgcHJpbnRmKCIlZFxuIiwgcHJuZygxMzMxMSkpOwogICAgcHJpbnRmKCIlZFxuIiwgcHJuZygxMzMxMikpOwogICAgcHJpbnRmKCIlZFxuIiwgcHJuZygxMzMxMykpOwoKICAgIHJldHVybiAwOwp9