PHSだと検索が遅いのでCで書いてみた。
C使える人限定。
大分早くなったはず。
このブログにtxtファイルとか投稿できないっぽいんでgmソースを以下に。 
適当に改変して使ってくださいな。


#include <stdio.h>

unsigned long fukaseed(unsigned long s);

#define MINF 2000 // 最小F
#define MAXF 40000 // 最大F
#define OMOTEID 0 // 表ID
#define URAID 65368 // 裏ID

int main(void)
{
unsigned long m, h, f, id, id0;
for (f=MINF; f<=MAXF; f++){
for (m=0; m<256; m++){
for (h=0; h<24; h++){
id = fukaseed((m<<24) | (h<<16) | f);
if (((id & 0xffff) == OMOTEID) && ((URAID)>>3 == (id>>19))){
printf("時:%u 月日分秒:%u F:%u 表ID:%u 裏ID:%u\n", h, m, f, id&0xffff, id>>16);
}
}
}
// 進捗表示 
if (f%100==0){
printf("(%u)\n", f);
}
}
return 0;
}

// 初期シードから孵化乱数計算
unsigned long fukaseed(unsigned long s)
{
unsigned long t[3];
t[0] = s;
unsigned int i;
// 必要な部分のみの第0テーブル決定
t[0] = ((t[0]>>30) ^ t[0]) * 0x6c078965 + 1;
t[1] = ((t[0]>>30) ^ t[0]) * 0x6c078965 + 2;
t[2] = t[1];
for (i=3; i<399; i++){
t[2] = ((t[2]>>30) ^ t[2]) * 0x6c078965 + i;
}
// ID決定に使う乱数を計算
unsigned long k;
k = (t[0] & 0x80000000) | (t[1] & 0x7fffffff);
if (k % 2 == 1){
k = (k / 2) ^ t[2];
k = k ^ 0x9908b0df;
}
else{
k = (k / 2) ^ t[2];
}
k = (k / 0x800) ^ k;
k = ((k * 0x80) & 0x9d2c5680) ^ k;
k = ((k * 0x8000) & 0xefc60000) ^ k;
k = (k / 0x40000) ^ k;
return k;
}