Returning to this problem after dinner I realized that its discrete nature dooms the above method, so I resorted to actual counting but as efficiently as I could manage. I've written a program that solves it in about 70 seconds (32-bit 2.5ghz machine). The inner loop repeats 968,790,360 times, just less than a billion compared to 3.7 billion billion for the original program. However, I can't help but feel there's a much simpler solution. Anyway, here's mine.

Consider the puzzle with r = 10. The picture below shows the "pixels" that are within and on the circle in just one quadrant (not including the axes):
Code:
0
9 * * * *
8 * * * * * *
7 * * * * * * *
6 * * * * * * * *
5 * * * * * * * *
4 * * * * * * * * *
3 * * * * * * * * *
2 * * * * * * * * *
1 * * * * * * * * *
0 1 2 3 4 5 6 7 8 9 0
The idea is to find the first pixel that is outside the circle starting at line r - 1 (line 9 above). Then step straight down and start scanning the next row from that point, and so on. Just sum the number of pixels you find in each row to count how many there are in the whole quadrant. To get the final answer, multiply that count by 4 (for 4 quadrants) and add in r * 4 + 1 for the axes.

Code:
#include <stdio.h>
#include <stdint.h>

int main(void)
{
  int64_t c = 0, r = 968790360, sr, i, j, last = 0;

  for (i = 1; i < r; i++) {
    sr = r * r - (r - i) * (r - i);
    for (j = last; j * j <= sr; j++)
      ;
    last = j;
    c += last - 1;
  }
  c *= 4;
  c += 4 * r + 1;

  c = (c * 0x671659AD2B395A35LL) ^ 0x6A657B39259F7846LLU;
  printf("%.8s\n", (char*)&c);

  return 0;
}
BTW, the secret message is "welldone".