/*****************************************************************************/
/*									     */
/*  RIGHT-SHIFT 1024 BITS						     */
/*  03/28/10 (dkc)							     */
/*									     */
/*****************************************************************************/
void shift1024(unsigned int A[32], unsigned int B[32], unsigned int shift) {
unsigned int temp;

B[0]=A[0];
B[1]=A[1];
B[2]=A[2];
B[3]=A[3];
B[4]=A[4];
B[5]=A[5];
B[6]=A[6];
B[7]=A[7];
B[8]=A[8];
B[9]=A[9];
B[10]=A[10];
B[11]=A[11];
B[12]=A[12];
B[13]=A[13];
B[14]=A[14];
B[15]=A[15];
B[16]=A[16];
B[17]=A[17];
B[18]=A[18];
B[19]=A[19];
B[20]=A[20];
B[21]=A[21];
B[22]=A[22];
B[23]=A[23];
B[24]=A[24];
B[25]=A[25];
B[26]=A[26];
B[27]=A[27];
B[28]=A[28];
B[29]=A[29];
B[30]=A[30];
B[31]=A[31];

while (shift>31) {
   B[31]=B[30];
   B[30]=B[29];
   B[29]=B[28];
   B[28]=B[27];
   B[27]=B[26];
   B[26]=B[25];
   B[25]=B[24];
   B[24]=B[23];
   B[23]=B[22];
   B[22]=B[21];
   B[21]=B[20];
   B[20]=B[19];
   B[19]=B[18];
   B[18]=B[17];
   B[17]=B[16];
   B[16]=B[15];
   B[15]=B[14];
   B[14]=B[13];
   B[13]=B[12];
   B[12]=B[11];
   B[11]=B[10];
   B[10]=B[9];
   B[9]=B[8];
   B[8]=B[7];
   B[7]=B[6];
   B[6]=B[5];
   B[5]=B[4];
   B[4]=B[3];
   B[3]=B[2];
   B[2]=B[1];
   B[1]=B[0];
   B[0]=0;
   shift=shift-32;
   }
if (shift==0)
   return;

B[31]=B[31]>>shift;
temp=B[30]<<(32-shift);
B[31]=B[31]|temp;

B[30]=B[30]>>shift;
temp=B[29]<<(32-shift);
B[30]=B[30]|temp;

B[29]=B[29]>>shift;
temp=B[28]<<(32-shift);
B[29]=B[29]|temp;

B[28]=B[28]>>shift;
temp=B[27]<<(32-shift);
B[28]=B[28]|temp;

B[27]=B[27]>>shift;
temp=B[26]<<(32-shift);
B[27]=B[27]|temp;

B[26]=B[26]>>shift;
temp=B[25]<<(32-shift);
B[26]=B[26]|temp;

B[25]=B[25]>>shift;
temp=B[24]<<(32-shift);
B[25]=B[25]|temp;

B[24]=B[24]>>shift;
temp=B[23]<<(32-shift);
B[24]=B[24]|temp;

B[23]=B[23]>>shift;
temp=B[22]<<(32-shift);
B[23]=B[23]|temp;

B[22]=B[22]>>shift;
temp=B[21]<<(32-shift);
B[22]=B[22]|temp;

B[21]=B[21]>>shift;
temp=B[20]<<(32-shift);
B[21]=B[21]|temp;

B[20]=B[20]>>shift;
temp=B[19]<<(32-shift);
B[20]=B[20]|temp;

B[19]=B[19]>>shift;
temp=B[18]<<(32-shift);
B[19]=B[19]|temp;

B[18]=B[18]>>shift;
temp=B[17]<<(32-shift);
B[18]=B[18]|temp;

B[17]=B[17]>>shift;
temp=B[16]<<(32-shift);
B[17]=B[17]|temp;

B[16]=B[16]>>shift;
temp=B[15]<<(32-shift);
B[16]=B[16]|temp;

B[15]=B[15]>>shift;
temp=B[14]<<(32-shift);
B[15]=B[15]|temp;

B[14]=B[14]>>shift;
temp=B[13]<<(32-shift);
B[14]=B[14]|temp;

B[13]=B[13]>>shift;
temp=B[12]<<(32-shift);
B[13]=B[13]|temp;

B[12]=B[12]>>shift;
temp=B[11]<<(32-shift);
B[12]=B[12]|temp;

B[11]=B[11]>>shift;
temp=B[10]<<(32-shift);
B[11]=B[11]|temp;

B[10]=B[10]>>shift;
temp=B[9]<<(32-shift);
B[10]=B[10]|temp;

B[9]=B[9]>>shift;
temp=B[8]<<(32-shift);
B[9]=B[9]|temp;

B[8]=B[8]>>shift;
temp=B[7]<<(32-shift);
B[8]=B[8]|temp;

B[7]=B[7]>>shift;
temp=B[6]<<(32-shift);
B[7]=B[7]|temp;

B[6]=B[6]>>shift;
temp=B[5]<<(32-shift);
B[6]=B[6]|temp;

B[5]=B[5]>>shift;
temp=B[4]<<(32-shift);
B[5]=B[5]|temp;

B[4]=B[4]>>shift;
temp=B[3]<<(32-shift);
B[4]=B[4]|temp;

B[3]=B[3]>>shift;
temp=B[2]<<(32-shift);
B[3]=B[3]|temp;

B[2]=B[2]>>shift;
temp=B[1]<<(32-shift);
B[2]=B[2]|temp;

B[1]=B[1]>>shift;
temp=B[0]<<(32-shift);
B[1]=B[1]|temp;

B[0]=B[0]>>shift;
return;
}