You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1383 lines
37 KiB

const int SHIFT_TABLE[16] = {1, 2, 4, 8, 16, 32, 64, 128,
256, 512, 1024, 2048, 4096, 8192, 16384, 32768};
int long_func() {
int ans, i, x, y, cur;
{
int pl = 2, pr = 0, pres = 1;
while (pr > 0) {
ans = 0;
i = 0;
x = pr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int ml = pres, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pres = ans;
}
{
int ml = pl, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pl = ans;
x = pr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
pr = ans;
}
ans = pres;
}
putint(ans);
putch(10);
{
int pl = 2, pr = 1, pres = 1;
while (pr > 0) {
ans = 0;
i = 0;
x = pr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int ml = pres, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pres = ans;
}
{
int ml = pl, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pl = ans;
x = pr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
pr = ans;
}
ans = pres;
}
putint(ans);
putch(10);
cur = 2;
while (cur < 16) {
{
int pl = 2, pr = cur, pres = 1;
while (pr > 0) {
ans = 0;
i = 0;
x = pr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int ml = pres, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pres = ans;
}
{
int ml = pl, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pl = ans;
x = pr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
pr = ans;
}
ans = pres;
}
putint(ans);
putch(10);
cur = cur + 1;
}
cur = 0;
while (cur < 16) {
{
int pl = 2, pr = cur, pres = 1;
while (pr > 0) {
ans = 0;
i = 0;
x = pr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int ml = pres, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pres = ans;
}
{
int ml = pl, mr = pl, mres = 0;
while (mr) {
ans = 0;
i = 0;
x = mr;
y = 1;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
if (ans) {
{
int al = mres, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
mres = ans;
}
{
int al = ml, c = ml, sum;
while (c) {
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2) {
if (y % 2 == 0) {
ans = ans + 1 * SHIFT_TABLE[i];
}
} else if (y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
sum = ans;
ans = 0;
i = 0;
x = al;
y = c;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
c = ans;
if ((1) > 15) {
ans = 0;
} else {
ans = 0;
i = 0;
x = (c)*SHIFT_TABLE[1];
y = 0xffff;
while (i < 16) {
if (x % 2 && y % 2) {
ans = ans + 1 * SHIFT_TABLE[i];
}
x = x / 2;
y = y / 2;
i = i + 1;
}
}
c = ans;
al = sum;
}
ans = al;
}
ml = ans;
x = mr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
mr = ans;
}
ans = mres;
}
pl = ans;
x = pr;
y = 1;
if (y >= 15) {
if (x < 0) {
ans = 0xffff;
} else {
ans = 0;
}
} else if (y > 0) {
if (x > 0x7fff) {
x = x / SHIFT_TABLE[y];
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
} else {
ans = x / SHIFT_TABLE[y];
}
} else {
ans = x;
}
pr = ans;
}
ans = pres;
}
if (SHIFT_TABLE[cur] != ans) return 1;
cur = cur + 1;
}
return 0;
}
int main() {
return long_func();
}