#include <stdio.h>
#include <stdlib.h>
 
typedef struct {
    union {
        struct custom {
            unsigned char Lower8;    // al
            unsigned char Higher8;   // ah
            unsigned short Middle16; // ax
            unsigned int Higher32;   // eax
        } sizes;
        unsigned long long T64bit; // rax
    };
} reg_t;
 
int main(void) {
    reg_t AX_REG;
    printf("sizeof(reg_t) == %u\n", sizeof(reg_t
));     AX_REG.T64bit = 0x1122334455667788;
    printf("Actual: 0x%08lX\n", AX_REG.
T64bit);     AX_REG.sizes.Higher32 = 0xDEADBEEF;
    printf("Actual: 0x%08lX\n", AX_REG.
T64bit);     AX_REG.sizes.Lower8 = 0x00;
    printf("Actual: 0x%08lX\n", AX_REG.
T64bit);     AX_REG.sizes.Higher8 = 0xFF;
    printf("Actual: 0x%08lX\n", AX_REG.
T64bit);     AX_REG.sizes.Middle16 = 0x1234;
    printf("Actual: 0x%08lX\n", AX_REG.
T64bit);     return 0;
}
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuaW9uIHsKICAgICAgICBzdHJ1Y3QgY3VzdG9tIHsKICAgICAgICAgICAgdW5zaWduZWQgY2hhciBMb3dlcjg7ICAgIC8vIGFsCiAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSGlnaGVyODsgICAvLyBhaAogICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBNaWRkbGUxNjsgLy8gYXgKICAgICAgICAgICAgdW5zaWduZWQgaW50IEhpZ2hlcjMyOyAgIC8vIGVheAogICAgICAgIH0gc2l6ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIFQ2NGJpdDsgLy8gcmF4CiAgICB9Owp9IHJlZ190OwoKaW50IG1haW4odm9pZCkgewogICAgcmVnX3QgQVhfUkVHOwogICAgcHJpbnRmKCJzaXplb2YocmVnX3QpID09ICV1XG4iLCBzaXplb2YocmVnX3QpKTsKICAgIEFYX1JFRy5UNjRiaXQgPSAweDExMjIzMzQ0NTU2Njc3ODg7CiAgICBwcmludGYoIkFjdHVhbDogMHglMDhsWFxuIiwgQVhfUkVHLlQ2NGJpdCk7CiAgICBBWF9SRUcuc2l6ZXMuSGlnaGVyMzIgPSAweERFQURCRUVGOwogICAgcHJpbnRmKCJBY3R1YWw6IDB4JTA4bFhcbiIsIEFYX1JFRy5UNjRiaXQpOwogICAgQVhfUkVHLnNpemVzLkxvd2VyOCA9IDB4MDA7CiAgICBwcmludGYoIkFjdHVhbDogMHglMDhsWFxuIiwgQVhfUkVHLlQ2NGJpdCk7CiAgICBBWF9SRUcuc2l6ZXMuSGlnaGVyOCA9IDB4RkY7CiAgICBwcmludGYoIkFjdHVhbDogMHglMDhsWFxuIiwgQVhfUkVHLlQ2NGJpdCk7CiAgICBBWF9SRUcuc2l6ZXMuTWlkZGxlMTYgPSAweDEyMzQ7CiAgICBwcmludGYoIkFjdHVhbDogMHglMDhsWFxuIiwgQVhfUkVHLlQ2NGJpdCk7CiAgICByZXR1cm4gMDsKfQ==