/*****************************************************************************/
/* */
/* INNER LOOP */
/* 11/14/06 (dkc) */
/* */
/*****************************************************************************/
unsigned int furtest(unsigned int e);
unsigned int comfact(unsigned int d, unsigned int e, unsigned int count);
unsigned int furcond(unsigned int d, unsigned int e);
unsigned int euclid(unsigned int a, unsigned int b);
void depower(unsigned int d, unsigned int e, unsigned int p, unsigned int *S);
unsigned int search(unsigned int *S, unsigned int k);
unsigned int eloop(unsigned int d, unsigned int k, unsigned int n,
unsigned int outsize, unsigned int *output) {
unsigned int e,count;
unsigned int S[2];
for (e=d-1; e>0; e--) {
if (((d/2)*2==d)&&((e/2)*2==e))
continue;
if (furtest(e)!=0)
continue;
if (comfact(d,e,4)!=0)
continue;
if (euclid(d,e)!=1)
continue;
if (furcond(d,e)!=0)
continue;
depower(d,e,3,S);
count=search(S,k);
if (count!=0) {
output[n]=d;
output[n+1]=e;
output[n+2]=count;
n=n+3;
if (n>outsize)
break;
}
}
return(n);
}