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?