struct { int a1[16385]; char a2[1]; char a3[1]; } a(), b; typedef union { struct { int c1; }; int c2; } c; c d; int e; unsigned f(); void g() { unsigned aq = f(); d.c2 = 0; if (e == &b) aq = b.a2[aq]; else { if (e == 0) aq = b.a3[aq]; if (e) d.c1 = 1; } a(d, aq); }