-               Length -= BytesRemToAlignment;
-
-               switch (BytesRemToAlignment)
-               {
-                       default:
-                               do
-                               {
-                                       if (!(Endpoint_IsReadWriteAllowed()))
-                                       {
-                                               TEMPLATE_CLEAR_ENDPOINT();
-
-                                               #if !defined(NO_STREAM_CALLBACKS)
-                                               if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
-                                                 return ENDPOINT_RWSTREAM_CallbackAborted;
-                                               #endif
-
-                                               if ((ErrorCode = Endpoint_WaitUntilReady()))
-                                                 return ErrorCode;
-                                       }
-
-                                       Length -= 8;
-                                       
-                                       TEMPLATE_TRANSFER_BYTE(DataStream);
-                       case 7: TEMPLATE_TRANSFER_BYTE(DataStream);
-                       case 6: TEMPLATE_TRANSFER_BYTE(DataStream);
-                       case 5: TEMPLATE_TRANSFER_BYTE(DataStream);
-                       case 4: TEMPLATE_TRANSFER_BYTE(DataStream);
-                       case 3: TEMPLATE_TRANSFER_BYTE(DataStream);
-                       case 2: TEMPLATE_TRANSFER_BYTE(DataStream);
-                       case 1: TEMPLATE_TRANSFER_BYTE(DataStream);
-                               } while (Length >= 8);  
-               }
+               Length -= *BytesProcessed;
+               TEMPLATE_BUFFER_MOVE(DataStream, *BytesProcessed);