Can anyone tell me whats mean with these code?

void appBitsCpy( uint8* Dest, int32 DestBit, uint8* Src, int32 SrcBit, int32 BitCount )
{
if( BitCount==0 ) return;

// Special case - always at least one bit to copy,
// a maximum of 2 bytes to read, 2 to write - only touch bytes that are actually used.
if( BitCount <= 8 ) 
{
	uint32 DestIndex	   = DestBit/8;
	uint32 SrcIndex	   = SrcBit /8;
	uint32 LastDest	   =( DestBit+BitCount-1 )/8;  
	uint32 LastSrc	   =( SrcBit +BitCount-1 )/8;  
	uint32 ShiftSrc     = SrcBit & 7; 
	uint32 ShiftDest    = DestBit & 7;
	uint32 FirstMask    = 0xFF << ShiftDest;  
	uint32 LastMask     = 0xFE << ((DestBit + BitCount-1) & 7) ; // Pre-shifted left by 1.	
	uint32 Accu;		

	if( SrcIndex == LastSrc )
		Accu = (Src[SrcIndex] >> ShiftSrc); 
	else
		Accu =( (Src[SrcIndex] >> ShiftSrc) | (Src[LastSrc ] << (8-ShiftSrc)) );			

	if( DestIndex == LastDest )
	{
		uint32 MultiMask = FirstMask & ~LastMask;
		Dest[DestIndex] = ( ( Dest[DestIndex] & ~MultiMask ) | ((Accu << ShiftDest) & MultiMask) );		
	}
	else
	{		
		Dest[DestIndex] = (uint8)( ( Dest[DestIndex] & ~FirstMask ) | (( Accu << ShiftDest) & FirstMask) ) ;
		Dest[LastDest ] = (uint8)( ( Dest[LastDest ] & LastMask  )  | (( Accu >> (8-ShiftDest)) & ~LastMask) ) ;
	}

	return;
}