- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
/* how many times the value will be printed?
change 1 line to fix the possibility to compile at diff x64-32 opt lvls
*/
int main(void) {
return ({
#include <stdio.h>;
__attribute__ ((aligned (8))) struct {
struct {
} _struct;
union _union {
int _register_ : 001;
char _auto_ : 1|1;
struct _struct {
double _float;
};
};
int _a;
unsigned short __a;
int ___a;
} letni =
{._a = 0x1122,
0xC1C255AA,
0x334477CC};
*((unsigned short*)&letni._a + (1<<1|1)) = 0x11;
for (volatile int i = *((unsigned short*)&letni.__a); i--;) {
if (i == *((unsigned short*)&letni.__a) - 01) {
*(volatile int*)&i = *((unsigned short*)&letni.___a-1);
continue;
};
printf("%x ", i);
}
}), (0,0);
}
for (volatile int i = *((unsigned short*)&letni.__a),
main = *((unsigned short*)&letni._a + (1<<1|1)) = 0x11; i--;)
(i == *((unsigned short*)&letni.__a) - 01) ?
({*(volatile int*)&i = *((unsigned short*)&letni.___a-1);
continue;})
: 0,
printf("%x ", i);