/*****************************************************************************/
/*									     */
/*  1024/32 BIT DIVIDE (UNSIGNED)					     */
/*  02/08/12 (dkc)							     */
/*									     */
/*****************************************************************************/
unsigned int carry(unsigned int a, unsigned int b, unsigned int sum);
unsigned int lmbd(unsigned int mode, unsigned int a);
void div1024_32(unsigned int a0, unsigned int a1, unsigned int a2,
	       unsigned int a3, unsigned int a4, unsigned int a5,
	       unsigned int a6, unsigned int a7, unsigned int a8,
	       unsigned int a9, unsigned int a10, unsigned int a11,
	       unsigned int a12, unsigned int a13, unsigned int a14,
	       unsigned int a15, unsigned int a16, unsigned int a17,
	       unsigned int a18, unsigned int a19, unsigned int a20,
	       unsigned int a21, unsigned int a22, unsigned int a23,
	       unsigned int a24, unsigned int a25, unsigned int a26,
	       unsigned int a27, unsigned int a28, unsigned int a29,
	       unsigned int a30, unsigned int a31,
	       unsigned int *quotient, unsigned int d31) {
unsigned int i,d0,d1,d2,d3,d4,d5,d6,dshift,ashift,count,flag;
unsigned int shift,c,c0,c1,c2,c3,c4,c5,c6,temp,temp0,temp1,temp2,temp3;
unsigned int temp4,temp5,temp6,temp7;
unsigned int d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23;
unsigned int d24,d25,d26,d27,d28,d29,d30;
unsigned int c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23;
unsigned int c24,c25,c26,c27,c28,c29,c30;
unsigned int temp8,temp9,temp10,temp11,temp12,temp13,temp14,temp15;
unsigned int temp16,temp17,temp18,temp19,temp20,temp21,temp22,temp23;
unsigned int temp24,temp25,temp26,temp27,temp28,temp29,temp30,temp31;

if ((a0==0)&&(a1==0)&&(a2==0)&&(a3==0)&&(a4==0)&&(a5==0)&&(a6==0)&&(a7==0)&&
   (a8==0)&&(a9==0)&&(a10==0)&&(a11==0)&&(a12==0)&&(a13==0)&&(a14==0)&&(a15==0)&&
   (a16==0)&&(a17==0)&&(a18==0)&&(a19==0)&&(a20==0)&&(a21==0)&&(a22==0)&&(a23==0)&&
   (a24==0)&&(a25==0)&&(a26==0)&&(a27==0)&&(a28==0)&&(a29==0)&&(a30==0)&&(a31<d31)) {
   *quotient=0;
   *(quotient+1)=0;
   *(quotient+2)=0;
   *(quotient+3)=0;
   *(quotient+4)=0;
   *(quotient+5)=0;
   *(quotient+6)=0;
   *(quotient+7)=0;
   *(quotient+8)=0;
   *(quotient+9)=0;
   *(quotient+10)=0;
   *(quotient+11)=0;
   *(quotient+12)=0;
   *(quotient+13)=0;
   *(quotient+14)=0;
   *(quotient+15)=0;
   *(quotient+16)=0;
   *(quotient+17)=0;
   *(quotient+18)=0;
   *(quotient+19)=0;
   *(quotient+20)=0;
   *(quotient+21)=0;
   *(quotient+22)=0;
   *(quotient+23)=0;
   *(quotient+24)=0;
   *(quotient+25)=0;
   *(quotient+26)=0;
   *(quotient+27)=0;
   *(quotient+28)=0;
   *(quotient+29)=0;
   *(quotient+30)=0;
   *(quotient+31)=0;
   return;
   }
dshift=lmbd(1,d31);
dshift+=992;

ashift=lmbd(1,a0);
if (a0==0)
   ashift+=lmbd(1,a1);
if ((a0|a1)==0)
   ashift+=lmbd(1,a2);
if ((a0|a1|a2)==0)
   ashift+=lmbd(1,a3);
if ((a0|a1|a2|a3)==0)
   ashift+=lmbd(1,a4);
if ((a0|a1|a2|a3|a4)==0)
   ashift+=lmbd(1,a5);
if ((a0|a1|a2|a3|a4|a5)==0)
   ashift+=lmbd(1,a6);
if ((a0|a1|a2|a3|a4|a5|a6)==0)
   ashift+=lmbd(1,a7);
if ((a0|a1|a2|a3|a4|a5|a6|a7)==0)
   ashift+=lmbd(1,a8);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8)==0)
   ashift+=lmbd(1,a9);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9)==0)
   ashift+=lmbd(1,a10);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10)==0)
   ashift+=lmbd(1,a11);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11)==0)
   ashift+=lmbd(1,a12);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12)==0)
   ashift+=lmbd(1,a13);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13)==0)
   ashift+=lmbd(1,a14);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14)==0)
   ashift+=lmbd(1,a15);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15)==0)
   ashift+=lmbd(1,a16);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16)==0)
   ashift+=lmbd(1,a17);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17)==0)
   ashift+=lmbd(1,a18);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18)==0)
   ashift+=lmbd(1,a19);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19)==0)
   ashift+=lmbd(1,a20);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20)==0)
   ashift+=lmbd(1,a21);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21)==0)
   ashift+=lmbd(1,a22);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22)==0)
   ashift+=lmbd(1,a23);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23)==0)
   ashift+=lmbd(1,a24);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23|a24)==0)
   ashift+=lmbd(1,a25);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23|a24|a25)==0)
   ashift+=lmbd(1,a26);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23|a24|a25|a26)==0)
   ashift+=lmbd(1,a27);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23|a24|a25|a26|a27)==0)
   ashift+=lmbd(1,a28);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23|a24|a25|a26|a27|a28)==0)
   ashift+=lmbd(1,a29);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23|a24|a25|a26|a27|a28|a29)==0)
   ashift+=lmbd(1,a30);
if ((a0|a1|a2|a3|a4|a5|a6|a7|a8|a9|a10|a11|a12|a13|a14|a15|a16|a17|a18|a19|a20|a21|a22|a23|a24|a25|a26|a27|a28|a29|a30)==0)
   ashift+=lmbd(1,a31);

shift=dshift-ashift;
count=shift+1;
d0=0;
d1=0;
d2=0;
d3=0;
d4=0;
d5=0;
d6=0;
d7=0;
d8=0;
d9=0;
d10=0;
d11=0;
d12=0;
d13=0;
d14=0;
d15=0;
d16=0;
d17=0;
d18=0;
d19=0;
d20=0;
d21=0;
d22=0;
d23=0;
d24=0;
d25=0;
d26=0;
d27=0;
d28=0;
d29=0;
d30=0;
if (shift<32) {
   if (shift!=0) {
      d30=d31>>(32-shift);
      d31=d31<<shift;
      }
   flag=31;
   shift=32-shift;
   }
else {
   shift=shift-32;
   d30=d31;
   d31=0;
   if (shift<32) {
      if (shift!=0) {
	 d29=d30>>(32-shift);
	 d30=d30<<shift;
	 }
      flag=30;
      shift=32-shift;
      }
   else {
      shift=shift-32;
      d29=d30;
      d30=0;
      if (shift<32) {
	 if (shift!=0) {
	    d28=d29>>(32-shift);
	    d29=d29<<shift;
	    }
	 flag=29;
	 shift=32-shift;
	 }
      else {
	 shift=shift-32;
	 d28=d29;
	 d29=0;
	 if (shift<32) {
	    if (shift!=0) {
	       d27=d28>>(32-shift);
	       d28=d28<<shift;
	       }
	    flag=28;
	    shift=32-shift;
	    }
	 else {
	    shift=shift-32;
	    d27=d28;
	    d28=0;
	    if (shift<32) {
	       if (shift!=0) {
		  d26=d27>>(32-shift);
		  d27=d27<<shift;
		  }
	       flag=27;
	       shift=32-shift;
	       }
	    else {
	       shift=shift-32;
	       d26=d27;
	       d27=0;
	       if (shift<32) {
		  if (shift!=0) {
		     d25=d26>>(32-shift);
		     d26=d26<<shift;
		     }
		  flag=26;
		  shift=32-shift;
		  }
	       else {
		  shift=shift-32;
		  d25=d26;
		  d26=0;
		  if (shift<32) {
		     if (shift!=0) {
			d24=d25>>(32-shift);
			d25=d25<<shift;
			}
		     flag=25;
		     shift=32-shift;
		     }
		  else {
		     shift=shift-32;
		     d24=d25;
		     d25=0;
		     if (shift<32) {
			if (shift!=0) {
			   d23=d24>>(32-shift);
			   d24=d24<<shift;
			   }
			flag=24;
			shift=32-shift;
			}
		     else {
			shift=shift-32;
			d23=d24;
			d24=0;
			if (shift<32) {
			   if (shift!=0) {
			      d22=d23>>(32-shift);
			      d23=d23<<shift;
			      }
			   flag=23;
			   shift=32-shift;
			   }
			else {
			   shift=shift-32;
			   d22=d23;
			   d23=0;
			   if (shift<32) {
			      if (shift!=0) {
				 d21=d22>>(32-shift);
				 d22=d22<<shift;
				 }
			      flag=22;
			      shift=32-shift;
			      }
			   else {
			      shift=shift-32;
			      d21=d22;
			      d22=0;
			      if (shift<32) {
				 if (shift!=0) {
				    d20=d21>>(32-shift);
				    d21=d21<<shift;
				    }
				 flag=21;
				 shift=32-shift;
				 }
			      else {
				 shift=shift-32;
				 d20=d21;
				 d21=0;
				 if (shift<32) {
				    if (shift!=0) {
				       d19=d20>>(32-shift);
				       d20=d20<<shift;
				       }
				    flag=20;
				    shift=32-shift;
				    }
				 else {
				    shift=shift-32;
				    d19=d20;
				    d20=0;
				    if (shift<32) {
				       if (shift!=0) {
					  d18=d19>>(32-shift);
					  d19=d19<<shift;
					  }
				       flag=19;
				       shift=32-shift;
				       }
				    else {
				       shift=shift-32;
				       d18=d19;
				       d19=0;
				       if (shift<32) {
					  if (shift!=0) {
					     d17=d18>>(32-shift);
					     d18=d18<<shift;
					     }
					  flag=18;
					  shift=32-shift;
					  }
				       else {
					  shift=shift-32;
					  d17=d18;
					  d18=0;
					  if (shift<32) {
					     if (shift!=0) {
						d16=d17>>(32-shift);
						d17=d17<<shift;
						}
					     flag=17;
					     shift=32-shift;
					     }
					  else {
					     shift=shift-32;
					     d16=d17;
					     d17=0;
					     if (shift<32) {
						if (shift!=0) {
						   d15=d16>>(32-shift);
						   d16=d16<<shift;
						   }
						flag=16;
						shift=32-shift;
						}
					     else {
						shift=shift-32;
						d15=d16;
						d16=0;
if (shift<32) {
   if (shift!=0) {
      d14=d15>>(32-shift);
      d15=d15<<shift;
      }
   flag=15;
   shift=32-shift;
   }
else {
   shift=shift-32;
   d14=d15;
   d15=0;
   if (shift<32) {
      if (shift!=0) {
	 d13=d14>>(32-shift);
	 d14=d14<<shift;
	 }
      flag=14;
      shift=32-shift;
      }
   else {
      shift=shift-32;
      d13=d14;
      d14=0;
      if (shift<32) {
	 if (shift!=0) {
	    d12=d13>>(32-shift);
	    d13=d13<<shift;
	    }
	 flag=13;
	 shift=32-shift;
	 }
      else {
	 shift=shift-32;
	 d12=d13;
	 d13=0;
	 if (shift<32) {
	    if (shift!=0) {
	       d11=d12>>(32-shift);
	       d12=d12<<shift;
	       }
	    flag=12;
	    shift=32-shift;
	    }
	 else {
	    shift=shift-32;
	    d11=d12;
	    d12=0;
	    if (shift<32) {
	       if (shift!=0) {
		  d10=d11>>(32-shift);
		  d11=d11<<shift;
		  }
	       flag=11;
	       shift=32-shift;
	       }
	    else {
	       shift=shift-32;
	       d10=d11;
	       d11=0;
	       if (shift<32) {
		  if (shift!=0) {
		     d9=d10>>(32-shift);
		     d10=d10<<shift;
		     }
		  flag=10;
		  shift=32-shift;
		  }
	       else {
		  shift=shift-32;
		  d9=d10;
		  d10=0;
		  if (shift<32) {
		     if (shift!=0) {
			d8=d9>>(32-shift);
			d9=d9<<shift;
			}
		     flag=9;
		     shift=32-shift;
		     }
		  else {
		     shift=shift-32;
		     d8=d9;
		     d9=0;
		     if (shift<32) {
			if (shift!=0) {
			   d7=d8>>(32-shift);
			   d8=d8<<shift;
			   }
			flag=8;
			shift=32-shift;
			}
		     else {
			shift=shift-32;
			d7=d8;
			d8=0;
			if (shift<32) {
			   if (shift!=0) {
			      d6=d7>>(32-shift);
			      d7=d7<<shift;
			      }
			   flag=7;
			   shift=32-shift;
			   }
			else {
			   shift=shift-32;
			   d6=d7;
			   d7=0;
			   if (shift<32) {
			      if (shift!=0) {
				 d5=d6>>(32-shift);
				 d6=d6<<shift;
				 }
			      flag=6;
			      shift=32-shift;
			      }
			   else {
			      shift=shift-32;
			      d5=d6;
			      d6=0;
			      if (shift<32) {
				 if (shift!=0) {
				    d4=d5>>(32-shift);
				    d5=d5<<shift;
				    }
				 flag=5;
				 shift=32-shift;
				 }
			      else {
				 shift=shift-32;
				 d4=d5;
				 d5=0;
				 if (shift<32) {
				    if (shift!=0) {
				       d3=d4>>(32-shift);
				       d4=d4<<shift;
				       }
				    flag=4;
				    shift=32-shift;
				    }
				 else {
				    shift=shift-32;
				    d3=d4;
				    d4=0;
				    if (shift<32) {
				       if (shift!=0) {
					  d2=d3>>(32-shift);
					  d3=d3<<shift;
					  }
				       flag=3;
				       shift=32-shift;
				       }
				    else {
				       shift=shift-32;
				       d2=d3;
				       d3=0;
				       if (shift<32) {
					  if (shift!=0) {
					     d1=d2>>(32-shift);
					     d2=d2<<shift;
					     }
					  flag=2;
					  shift=32-shift;
					  }
				       else {
					  shift=shift-32;
					  d1=d2;
					  d2=0;
					  if (shift<32) {
					     if (shift!=0) {
						d0=d1>>(32-shift);
						d1=d1<<shift;
						}
					     flag=1;
					     shift=32-shift;
					     }
					  else {
					     shift=shift-32;
					     d0=d1;
					     d1=0;
					     if (shift<32) {
						if (shift!=0) {
						   d0=d0<<shift;
						   }
						flag=0;
						shift=32-shift;
						}
						}
					     }
					  }
				       }
				    }
				 }
			      }
			   }
			}
		     }
		  }
	       }
	    }
	 }
      }
   }
					     }
					  }
				       }
				    }
				 }
			      }
			   }
			}
		     }
		  }
	       }
	    }
	 }
      }
   }
d0=~d0;
d1=~d1;
d2=~d2;
d3=~d3;
d4=~d4;
d5=~d5;
d6=~d6;
d7=~d7;
d8=~d8;
d9=~d9;
d10=~d10;
d11=~d11;
d12=~d12;
d13=~d13;
d14=~d14;
d15=~d15;
d16=~d16;
d17=~d17;
d18=~d18;
d19=~d19;
d20=~d20;
d21=~d21;
d22=~d22;
d23=~d23;
d24=~d24;
d25=~d25;
d26=~d26;
d27=~d27;
d28=~d28;
d29=~d29;
d30=~d30;
d31=~d31;

temp=d31+1;
c=carry(d31,1,temp);
d31=temp;

temp=d30+c;
c=carry(d30,1,temp);
d30=temp;

temp=d29+c;
c=carry(d29,1,temp);
d29=temp;

temp=d28+c;
c=carry(d28,1,temp);
d28=temp;

temp=d27+c;
c=carry(d27,1,temp);
d27=temp;

temp=d26+c;
c=carry(d26,1,temp);
d26=temp;

temp=d25+c;
c=carry(d25,1,temp);
d25=temp;

temp=d24+c;
c=carry(d24,1,temp);
d24=temp;

temp=d23+c;
c=carry(d23,1,temp);
d23=temp;

temp=d22+c;
c=carry(d22,1,temp);
d22=temp;

temp=d21+c;
c=carry(d21,1,temp);
d21=temp;

temp=d20+c;
c=carry(d20,1,temp);
d20=temp;

temp=d19+c;
c=carry(d19,1,temp);
d19=temp;

temp=d18+c;
c=carry(d18,1,temp);
d18=temp;

temp=d17+c;
c=carry(d17,1,temp);
d17=temp;

temp=d16+c;
c=carry(d16,1,temp);
d16=temp;

temp=d15+c;
c=carry(d15,1,temp);
d15=temp;

temp=d14+c;
c=carry(d14,1,temp);
d14=temp;

temp=d13+c;
c=carry(d13,1,temp);
d13=temp;

temp=d12+c;
c=carry(d12,1,temp);
d12=temp;

temp=d11+c;
c=carry(d11,1,temp);
d11=temp;

temp=d10+c;
c=carry(d10,1,temp);
d10=temp;

temp=d9+c;
c=carry(d9,1,temp);
d9=temp;

temp=d8+c;
c=carry(d8,1,temp);
d8=temp;

temp=d7+c;
c=carry(d7,1,temp);
d7=temp;

temp=d6+c;
c=carry(d6,1,temp);
d6=temp;

temp=d5+c;
c=carry(d5,1,temp);
d5=temp;

temp=d4+c;
c=carry(d4,1,temp);
d4=temp;

temp=d3+c;
c=carry(d3,1,temp);
d3=temp;

temp=d2+c;
c=carry(d2,c,temp);
d2=temp;

temp=d1+c;
c=carry(d1,c,temp);
d1=temp;

d0=d0+c;

for (i=0; i<count; i++) {
   temp31=a31+d31;
   c30=carry(a31,d31,temp31);

   temp=a30+c30;
   c29=carry(a30,c30,temp);


   temp30=temp+d30;
   c29+=carry(temp,d30,temp30);

   temp=a29+c29;
   c28=carry(a29,c29,temp);


   temp29=temp+d29;
   c28+=carry(temp,d29,temp29);

   temp=a28+c28;
   c27=carry(a28,c28,temp);


   temp28=temp+d28;
   c27+=carry(temp,d28,temp28);

   temp=a27+c27;
   c26=carry(a27,c27,temp);


   temp27=temp+d27;
   c26+=carry(temp,d27,temp27);

   temp=a26+c26;
   c25=carry(a26,c26,temp);


   temp26=temp+d26;
   c25+=carry(temp,d26,temp26);

   temp=a25+c25;
   c24=carry(a25,c25,temp);


   temp25=temp+d25;
   c24+=carry(temp,d25,temp25);

   temp=a24+c24;
   c23=carry(a24,c24,temp);


   temp24=temp+d24;
   c23+=carry(temp,d24,temp24);

   temp=a23+c23;
   c22=carry(a23,c23,temp);


   temp23=temp+d23;
   c22+=carry(temp,d23,temp23);

   temp=a22+c22;
   c21=carry(a22,c22,temp);


   temp22=temp+d22;
   c21+=carry(temp,d22,temp22);

   temp=a21+c21;
   c20=carry(a21,c21,temp);


   temp21=temp+d21;
   c20+=carry(temp,d21,temp21);

   temp=a20+c20;
   c19=carry(a20,c20,temp);


   temp20=temp+d20;
   c19+=carry(temp,d20,temp20);

   temp=a19+c19;
   c18=carry(a19,c19,temp);


   temp19=temp+d19;
   c18+=carry(temp,d19,temp19);

   temp=a18+c18;
   c17=carry(a18,c18,temp);


   temp18=temp+d18;
   c17+=carry(temp,d18,temp18);

   temp=a17+c17;
   c16=carry(a17,c17,temp);


   temp17=temp+d17;
   c16+=carry(temp,d17,temp17);

   temp=a16+c16;
   c15=carry(a16,c16,temp);


   temp16=temp+d16;
   c15+=carry(temp,d16,temp16);

   temp=a15+c15;
   c14=carry(a15,c15,temp);


   temp15=temp+d15;
   c14+=carry(temp,d15,temp15);

   temp=a14+c14;
   c13=carry(a14,c14,temp);


   temp14=temp+d14;
   c13+=carry(temp,d14,temp14);

   temp=a13+c13;
   c12=carry(a13,c13,temp);


   temp13=temp+d13;
   c12+=carry(temp,d13,temp13);

   temp=a12+c12;
   c11=carry(a12,c12,temp);


   temp12=temp+d12;
   c11+=carry(temp,d12,temp12);

   temp=a11+c11;
   c10=carry(a11,c11,temp);


   temp11=temp+d11;
   c10+=carry(temp,d11,temp11);

   temp=a10+c10;
   c9=carry(a10,c10,temp);


   temp10=temp+d10;
   c9+=carry(temp,d10,temp10);

   temp=a9+c9;
   c8=carry(a9,c9,temp);


   temp9=temp+d9;
   c8+=carry(temp,d9,temp9);

   temp=a8+c8;
   c7=carry(a8,c8,temp);


   temp8=temp+d8;
   c7+=carry(temp,d8,temp8);

   temp=a7+c7;
   c6=carry(a7,c7,temp);


   temp7=temp+d7;
   c6+=carry(temp,d7,temp7);

   temp=a6+c6;
   c5=carry(a6,c6,temp);


   temp6=temp+d6;
   c5+=carry(temp,d6,temp6);

   temp=a5+c5;
   c4=carry(a5,c5,temp);


   temp5=temp+d5;
   c4+=carry(temp,d5,temp5);

   temp=a4+c4;
   c3=carry(a4,c4,temp);


   temp4=temp+d4;
   c3+=carry(temp,d4,temp4);

   temp=a3+c3;
   c2=carry(a3,c3,temp);


   temp3=temp+d3;
   c2+=carry(temp,d3,temp3);

   temp=a2+c2;
   c1=carry(a2,c2,temp);


   temp2=temp+d2;
   c1+=carry(temp,d2,temp2);

   temp=a1+c1;
   c0=carry(a1,c1,temp);


   temp1=temp+d1;
   c0+=carry(temp,d1,temp1);


   temp0=a0+d0+c0;

   if ((temp0>>31)==0) {
      a0=temp0<<1;
      if ((temp1>>31)!=0)
	 c=1;
      else
	 c=0;
      a0=a0+c;

      a1=temp1<<1;
      if ((temp2>>31)!=0)
	 c=1;
      else
	 c=0;
      a1=a1+c;

      a2=temp2<<1;
      if ((temp3>>31)!=0)
	 c=1;
      else
	 c=0;
      a2=a2+c;

      a3=temp3<<1;
      if ((temp4>>31)!=0)
	 c=1;
      else
	 c=0;
      a3=a3+c;

      a4=temp4<<1;
      if ((temp5>>31)!=0)
	 c=1;
      else
	 c=0;
      a4=a4+c;

      a5=temp5<<1;
      if ((temp6>>31)!=0)
	 c=1;
      else
	 c=0;
      a5=a5+c;

      a6=temp6<<1;
      if ((temp7>>31)!=0)
	 c=1;
      else
	 c=0;
      a6=a6+c;

      a7=temp7<<1;
      if ((temp8>>31)!=0)
	 c=1;
      else
	 c=0;
      a7=a7+c;

      a8=temp8<<1;
      if ((temp9>>31)!=0)
	 c=1;
      else
	 c=0;
      a8=a8+c;

      a9=temp9<<1;
      if ((temp10>>31)!=0)
	 c=1;
      else
	 c=0;
      a9=a9+c;

      a10=temp10<<1;
      if ((temp11>>31)!=0)
	 c=1;
      else
	 c=0;
      a10=a10+c;

      a11=temp11<<1;
      if ((temp12>>31)!=0)
	 c=1;
      else
	 c=0;
      a11=a11+c;

      a12=temp12<<1;
      if ((temp13>>31)!=0)
	 c=1;
      else
	 c=0;
      a12=a12+c;

      a13=temp13<<1;
      if ((temp14>>31)!=0)
	 c=1;
      else
	 c=0;
      a13=a13+c;

      a14=temp14<<1;
      if ((temp15>>31)!=0)
	 c=1;
      else
	 c=0;
      a14=a14+c;

      a15=temp15<<1;
      if ((temp16>>31)!=0)
	 c=1;
      else
	 c=0;
      a15=a15+c;

      a16=temp16<<1;
      if ((temp17>>31)!=0)
	 c=1;
      else
	 c=0;
      a16=a16+c;

      a17=temp17<<1;
      if ((temp18>>31)!=0)
	 c=1;
      else
	 c=0;
      a17=a17+c;

      a18=temp18<<1;
      if ((temp19>>31)!=0)
	 c=1;
      else
	 c=0;
      a18=a18+c;

      a19=temp19<<1;
      if ((temp20>>31)!=0)
	 c=1;
      else
	 c=0;
      a19=a19+c;

      a20=temp20<<1;
      if ((temp21>>31)!=0)
	 c=1;
      else
	 c=0;
      a20=a20+c;

      a21=temp21<<1;
      if ((temp22>>31)!=0)
	 c=1;
      else
	 c=0;
      a21=a21+c;

      a22=temp22<<1;
      if ((temp23>>31)!=0)
	 c=1;
      else
	 c=0;
      a22=a22+c;

      a23=temp23<<1;
      if ((temp24>>31)!=0)
	 c=1;
      else
	 c=0;
      a23=a23+c;

      a24=temp24<<1;
      if ((temp25>>31)!=0)
	 c=1;
      else
	 c=0;
      a24=a24+c;

      a25=temp25<<1;
      if ((temp26>>31)!=0)
	 c=1;
      else
	 c=0;
      a25=a25+c;

      a26=temp26<<1;
      if ((temp27>>31)!=0)
	 c=1;
      else
	 c=0;
      a26=a26+c;

      a27=temp27<<1;
      if ((temp28>>31)!=0)
	 c=1;
      else
	 c=0;
      a27=a27+c;

      a28=temp28<<1;
      if ((temp29>>31)!=0)
	 c=1;
      else
	 c=0;
      a28=a28+c;

      a29=temp29<<1;
      if ((temp30>>31)!=0)
	 c=1;
      else
	 c=0;
      a29=a29+c;

      a30=temp30<<1;
      if ((temp31>>31)!=0)
	 c=1;
      else
	 c=0;
      a30=a30+c;

      a31=temp31<<1;
      a31=a31+1;

      }
   else {
      a0=a0<<1;
      if ((a1>>31)!=0)
	 c=1;
      else
	 c=0;
      a0=a0+c;

      a1=a1<<1;
      if ((a2>>31)!=0)
	 c=1;
      else
	 c=0;
      a1=a1+c;

      a2=a2<<1;
      if ((a3>>31)!=0)
	 c=1;
      else
	 c=0;
      a2=a2+c;

      a3=a3<<1;
      if ((a4>>31)!=0)
	 c=1;
      else
	 c=0;
      a3=a3+c;

      a4=a4<<1;
      if ((a5>>31)!=0)
	 c=1;
      else
	 c=0;
      a4=a4+c;

      a5=a5<<1;
      if ((a6>>31)!=0)
	 c=1;
      else
	 c=0;
      a5=a5+c;

      a6=a6<<1;
      if ((a7>>31)!=0)
	 c=1;
      else
	 c=0;
      a6=a6+c;

      a7=a7<<1;
      if ((a8>>31)!=0)
	 c=1;
      else
	 c=0;
      a7=a7+c;

      a8=a8<<1;
      if ((a9>>31)!=0)
	 c=1;
      else
	 c=0;
      a8=a8+c;

      a9=a9<<1;
      if ((a10>>31)!=0)
	 c=1;
      else
	 c=0;
      a9=a9+c;

      a10=a10<<1;
      if ((a11>>31)!=0)
	 c=1;
      else
	 c=0;
      a10=a10+c;

      a11=a11<<1;
      if ((a12>>31)!=0)
	 c=1;
      else
	 c=0;
      a11=a11+c;

      a12=a12<<1;
      if ((a13>>31)!=0)
	 c=1;
      else
	 c=0;
      a12=a12+c;

      a13=a13<<1;
      if ((a14>>31)!=0)
	 c=1;
      else
	 c=0;
      a13=a13+c;

      a14=a14<<1;
      if ((a15>>31)!=0)
	 c=1;
      else
	 c=0;
      a14=a14+c;

      a15=a15<<1;
      if ((a16>>31)!=0)
	 c=1;
      else
	 c=0;
      a15=a15+c;

      a16=a16<<1;
      if ((a17>>31)!=0)
	 c=1;
      else
	 c=0;
      a16=a16+c;

      a17=a17<<1;
      if ((a18>>31)!=0)
	 c=1;
      else
	 c=0;
      a17=a17+c;

      a18=a18<<1;
      if ((a19>>31)!=0)
	 c=1;
      else
	 c=0;
      a18=a18+c;

      a19=a19<<1;
      if ((a20>>31)!=0)
	 c=1;
      else
	 c=0;
      a19=a19+c;

      a20=a20<<1;
      if ((a21>>31)!=0)
	 c=1;
      else
	 c=0;
      a20=a20+c;

      a21=a21<<1;
      if ((a22>>31)!=0)
	 c=1;
      else
	 c=0;
      a21=a21+c;

      a22=a22<<1;
      if ((a23>>31)!=0)
	 c=1;
      else
	 c=0;
      a22=a22+c;

      a23=a23<<1;
      if ((a24>>31)!=0)
	 c=1;
      else
	 c=0;
      a23=a23+c;

      a24=a24<<1;
      if ((a25>>31)!=0)
	 c=1;
      else
	 c=0;
      a24=a24+c;

      a25=a25<<1;
      if ((a26>>31)!=0)
	 c=1;
      else
	 c=0;
      a25=a25+c;

      a26=a26<<1;
      if ((a27>>31)!=0)
	 c=1;
      else
	 c=0;
      a26=a26+c;

      a27=a27<<1;
      if ((a28>>31)!=0)
	 c=1;
      else
	 c=0;
      a27=a27+c;

      a28=a28<<1;
      if ((a29>>31)!=0)
	 c=1;
      else
	 c=0;
      a28=a28+c;

      a29=a29<<1;
      if ((a30>>31)!=0)
	 c=1;
      else
	 c=0;
      a29=a29+c;

      a30=a30<<1;
      if ((a31>>31)!=0)
	 c=1;
      else
	 c=0;
      a30=a30+c;

      a31=a31<<1;
      }
   }

shift=shift-1;
if (flag==31) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=0;
   a25=0;
   a26=0;
   a27=0;
   a28=0;
   a29=0;
   a30=0;
   a31=a31<<shift;
   a31=a31>>shift;
   } else
if (flag==30) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=0;
   a25=0;
   a26=0;
   a27=0;
   a28=0;
   a29=0;
   a30=a30<<shift;
   a30=a30>>shift;
   } else
if (flag==29) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=0;
   a25=0;
   a26=0;
   a27=0;
   a28=0;
   a29=a29<<shift;
   a29=a29>>shift;
   } else
if (flag==28) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=0;
   a25=0;
   a26=0;
   a27=0;
   a28=a28<<shift;
   a28=a28>>shift;
   } else
if (flag==27) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=0;
   a25=0;
   a26=0;
   a27=a27<<shift;
   a27=a27>>shift;
   } else
if (flag==26) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=0;
   a25=0;
   a26=a26<<shift;
   a26=a26>>shift;
   } else
if (flag==25) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=0;
   a25=a25<<shift;
   a25=a25>>shift;
   } else
if (flag==24) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=0;
   a24=a24<<shift;
   a24=a24>>shift;
   } else
if (flag==23) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=0;
   a23=a23<<shift;
   a23=a23>>shift;
   } else
if (flag==22) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=0;
   a22=a22<<shift;
   a22=a22>>shift;
   } else
if (flag==21) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=0;
   a21=a21<<shift;
   a21=a21>>shift;
   } else
if (flag==20) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=0;
   a20=a20<<shift;
   a20=a20>>shift;
   } else
if (flag==19) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=0;
   a19=a19<<shift;
   a19=a19>>shift;
   } else
if (flag==18) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=0;
   a18=a18<<shift;
   a18=a18>>shift;
   } else
if (flag==17) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=0;
   a17=a17<<shift;
   a17=a17>>shift;
   } else
if (flag==16) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=0;
   a16=a16<<shift;
   a16=a16>>shift;
   } else
if (flag==15) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=0;
   a15=a15<<shift;
   a15=a15>>shift;
   } else
if (flag==14) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=0;
   a14=a14<<shift;
   a14=a14>>shift;
   } else
if (flag==13) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=0;
   a13=a13<<shift;
   a13=a13>>shift;
   } else
if (flag==12) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=0;
   a12=a12<<shift;
   a12=a12>>shift;
   } else
if (flag==11) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=0;
   a11=a11<<shift;
   a11=a11>>shift;
   } else
if (flag==10) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=0;
   a10=a10<<shift;
   a10=a10>>shift;
   } else
if (flag==9) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=0;
   a9=a9<<shift;
   a9=a9>>shift;
   } else
if (flag==8) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=0;
   a8=a8<<shift;
   a8=a8>>shift;
   } else
if (flag==7) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=0;
   a7=a7<<shift;
   a7=a7>>shift;
   } else
if (flag==6) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=0;
   a6=a6<<shift;
   a6=a6>>shift;
   } else
if (flag==5) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=0;
   a5=a5<<shift;
   a5=a5>>shift;
   } else
if (flag==4) {
   a0=0;
   a1=0;
   a2=0;
   a3=0;
   a4=a4<<shift;
   a4=a4>>shift;
   } else
if (flag==3) {
   a0=0;
   a1=0;
   a2=0;
   a3=a3<<shift;
   a3=a3>>shift;
   }
else {
if (flag==2) {
   a0=0;
   a1=0;
   a2=a2<<shift;
   a2=a2>>shift;
   }
else {
if (flag==1) {
   a0=0;
   a1=a1<<shift;
   a1=a1>>shift;
   }
else {
   a0=a0<<shift;
   a0=a0>>shift;
   }
   }
   }
*quotient=a0;
*(quotient+1)=a1;
*(quotient+2)=a2;
*(quotient+3)=a3;
*(quotient+4)=a4;
*(quotient+5)=a5;
*(quotient+6)=a6;
*(quotient+7)=a7;
*(quotient+8)=a8;
*(quotient+9)=a9;
*(quotient+10)=a10;
*(quotient+11)=a11;
*(quotient+12)=a12;
*(quotient+13)=a13;
*(quotient+14)=a14;
*(quotient+15)=a15;
*(quotient+16)=a16;
*(quotient+17)=a17;
*(quotient+18)=a18;
*(quotient+19)=a19;
*(quotient+20)=a20;
*(quotient+21)=a21;
*(quotient+22)=a22;
*(quotient+23)=a23;
*(quotient+24)=a24;
*(quotient+25)=a25;
*(quotient+26)=a26;
*(quotient+27)=a27;
*(quotient+28)=a28;
*(quotient+29)=a29;
*(quotient+30)=a30;
*(quotient+31)=a31;
return;
}