#include <iostream>
using namespace std;
void ENA_REG_WRITE8(unsigned char* from, unsigned char* to)
{
*to=*from;
}
void ENA_REG_WRITE32(unsigned long* from, unsigned long* to)
{
*to=*from;
}
int main() {
unsigned char x[5]={11,10,9,8,7};
unsigned char y[5]={};
unsigned char* from_byte = x;
unsigned char* to_byte = y;
unsigned long* from_word = nullptr;
unsigned long* to_word = nullptr;
long n = sizeof(x) >> 2;
switch (sizeof(x) & 0b11) {
case 3: ENA_REG_WRITE8(from_byte++, to_byte++);
case 2: ENA_REG_WRITE8(from_byte++, to_byte++);
case 1: ENA_REG_WRITE8(from_byte++, to_byte++);
case 0: from_word=(unsigned long*)from_byte; to_word=(unsigned long*)to_byte; while(n --> 0) ENA_REG_WRITE32(from_word++, to_word++);
}
for(auto i : y)
{
cout << (unsigned)i << " ";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBFTkFfUkVHX1dSSVRFOCh1bnNpZ25lZCBjaGFyKiBmcm9tLCB1bnNpZ25lZCBjaGFyKiB0bykKewoJKnRvPSpmcm9tOwp9CnZvaWQgRU5BX1JFR19XUklURTMyKHVuc2lnbmVkIGxvbmcqIGZyb20sIHVuc2lnbmVkIGxvbmcqIHRvKQp7CgkqdG89KmZyb207Cn0KCmludCBtYWluKCkgewoJICAgIHVuc2lnbmVkIGNoYXIgeFs1XT17MTEsMTAsOSw4LDd9OwoJICAgIHVuc2lnbmVkIGNoYXIgeVs1XT17fTsKCSAgICB1bnNpZ25lZCBjaGFyKiBmcm9tX2J5dGUgPSB4OwoJICAgIHVuc2lnbmVkIGNoYXIqIHRvX2J5dGUgPSB5OwoJICAgIHVuc2lnbmVkIGxvbmcqIGZyb21fd29yZCA9IG51bGxwdHI7CgkgICAgdW5zaWduZWQgbG9uZyogdG9fd29yZCA9IG51bGxwdHI7CiAgICAgICAgbG9uZyBuID0gc2l6ZW9mKHgpID4+IDI7CiAgICAgICAgc3dpdGNoIChzaXplb2YoeCkgJiAwYjExKSB7CiAgICAgICAgY2FzZSAzOiBFTkFfUkVHX1dSSVRFOChmcm9tX2J5dGUrKywgdG9fYnl0ZSsrKTsKICAgICAgICBjYXNlIDI6IEVOQV9SRUdfV1JJVEU4KGZyb21fYnl0ZSsrLCB0b19ieXRlKyspOwogICAgICAgIGNhc2UgMTogRU5BX1JFR19XUklURTgoZnJvbV9ieXRlKyssIHRvX2J5dGUrKyk7CiAgICAgICAgY2FzZSAwOiBmcm9tX3dvcmQ9KHVuc2lnbmVkIGxvbmcqKWZyb21fYnl0ZTsgdG9fd29yZD0odW5zaWduZWQgbG9uZyopdG9fYnl0ZTsgd2hpbGUobiAtLT4gMCkgRU5BX1JFR19XUklURTMyKGZyb21fd29yZCsrLCB0b193b3JkKyspOwogICAgICAgIH0KICAgICAgICBmb3IoYXV0byBpIDogeSkKICAgICAgICB7CiAgICAgICAgCWNvdXQgPDwgKHVuc2lnbmVkKWkgPDwgIiAiOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQ==