rem: *dst = ( ( *src & 0xff ) << 8 ) | ( ( *src & 0xff00 ) >> 8 );
add: *dst = ( ( *src & 0xff ) << 8 ) | ( ( *src & 0xff00 ) >> 8 );  src += skip; dst += 1;
context: PlaybackInterrupt( struct EMU10kxData* dd ){  struct AHIAudioCtrlDrv* AudioCtrl = dd->audioctrl;  struct DriverBase*  AHIsubBase = (struct DriverBase*) dd->ahisubbase;  struct EMU10kxBase* EMU10kxBase = (struct EMU10kxBase*) AHIsubBase;  if( dd->mix_buffer != NULL && dd->current_buffer != NULL )  {    BOOL   skip_mix;    WORD*  src;    WORD*  dst;    size_t skip;    size_t samples;    int    i;    skip_mix = CallHookA( AudioCtrl->ahiac_PreTimerFunc, (Object*) AudioCtrl, 0 );        CallHookA( AudioCtrl->ahiac_PlayerFunc, (Object*) AudioCtrl, NULL );    if( ! skip_mix )    {      CallHookA( AudioCtrl->ahiac_MixerFunc, (Object*) AudioCtrl, dd->mix_buffer );    }    /* Now translate and transfer to the DMA buffer */    skip    = ( AudioCtrl->ahiac_Flags & AHIACF_HIFI ) ? 2 : 1;    samples = dd->current_length;    src     = dd->mix_buffer;    dst     = dd->current_buffer;    i = min( samples,	     AudioCtrl->ahiac_MaxBuffSamples * 2 - dd->current_position );    /* Update 'current_position' and 'samples' before destroying 'i' */    dd->current_position += i;    samples -= i;    if( AudioCtrl->ahiac_Flags & AHIACF_STEREO )    {      i *= 2;    }    while( i > 0 )    {      *dst = ( ( *src & 0xff ) << 8 ) | ( ( *src & 0xff00 ) >> 8 );      src += skip;      dst += 1;      --i;    }    if( dd->current_position == AudioCtrl->ahiac_MaxBuffSamples * 2 )    {      if( EMU10kxBase->flush_caches )      {	CacheClearE( dd->current_buffer,		     (ULONG) dst - (ULONG) dd->current_buffer,		     CACRF_ClearD );      }            dst = dd->voice.mem.addr;      dd->current_position = 0;      if( EMU10kxBase->flush_caches )      {	// Adjust for cache-clearing below	dd->current_buffer = dst;      }    }    if( samples > 0 )    {      /* Update 'current_position' before destroying 'samples' */      dd->current_position += samples;      if( AudioCtrl->ahiac_Flags & AHIACF_STEREO )      {	samples *= 2;      }      while( samples > 0 )      {	*dst = ( ( *src & 0xff ) << 8 ) | ( ( *src & 0xff00 ) >> 8 );	src += skip;	dst += 1;	--samples;      }    }    if( EMU10kxBase->flush_caches )    {      CacheClearE( dd->current_buffer,		   (ULONG) dst - (ULONG) dd->current_buffer,		   CACRF_ClearD );    }          /* Update 'current_buffer' */    dd->current_buffer = dst;    CallHookA( AudioCtrl->ahiac_PostTimerFunc, (Object*) AudioCtrl, 0 );  }  dd->playback_interrupt_enabled = TRUE;}