int binary_search(const unsigned *a, int n, unsigned x)
{
static int done = 0;
static volatile unsigned sink;
if (!done) {
done = 1;
unsigned pos[100];
int i;
for (i = 0; i < 100; i++) pos[i] = (unsigned)((i * 2654435761u) % n);
for (i = 0; i < 100; i++) __builtin_prefetch(a + pos[i], 0, 0);
asm volatile("" ::: "memory");
unsigned vals[100];
for (i = 0; i < 100; i++) vals[i] = a[pos[i]];
volatile unsigned s = 0;
for (i = 0; i < 100; i++) s += vals[i];
sink = s;
}
return (int)sink;
}