While running Hex-Rays decompiler against an application, Hex-Rays gave the following output:
__int64 v29; // r10 ... v29 = 0i64; if( !v28) v19 = 0; do { v30 = *(_BYTE *)(v29 + 5394926180i64); v31 = *(_BYTE *)(v29 + 5394926172i64); v32 = *(_BYTE *)(v29 + 5394926184i64); v33 = *(_BYTE *)(v29 + 5394926176i64); v34 = *(_BYTE *)(v29++ + 5394926224i64); v75.m128i_i8[v29 + 15] = v30 ^ v34; *((_BYTE *)&v76 + v29 + 3) = v31 ^ *(_BYTE *)(v29 + 5394926227i64); *((_BYTE *)&v76 + v29 + 7) = v32 ^ *(_BYTE *)(v29 + 5394926231i64); *((_BYTE *)&v76 + v29 + 11) = v33 ^ *(_BYTE *)(v29 + 5394926235i64); *((_BYTE *)&v74 + v29 + 15) = v30 ^ *(_BYTE *)(v29 + 5394926239i64); v75.m128i_i8[v29 + 3] = v31 ^ *(_BYTE *)(v29 + 5394926243i64); v75.m128i_i8[v29 + 7] = v32 ^ *(_BYTE *)(v29 + 5394926247i64); v75.m128i_i8[v29 + 11] = v33 ^ *(_BYTE *)(v29 + 5394926251i64); } while ( v29 < 4 ); I'm confused about the references:
*((_BYTE *)&v76 + v29 + 3) = v31 ^ *(_BYTE *)(v29 + 5394926227i64); *((_BYTE *)&v76 + v29 + 7) = v32 ^ *(_BYTE *)(v29 + 5394926231i64); *((_BYTE *)&v76 + v29 + 11) = v33 ^ *(_BYTE *)(v29 + 5394926235i64); *((_BYTE *)&v74 + v29 + 15) = v30 ^ *(_BYTE *)(v29 + 5394926239i64); These seem to be well outside the realm of any possible array? Am I missing something?