I'm currently working on taking apart a game (Soul Reaver: Legacy of Kain) and I often come across odd looking sections such as this in the decompiler
*(_DWORD *)(a2 + 16) = a2 + 624;
*(_DWORD *)(a2 + 38200) = a2 + 8;
*(_DWORD *)(a2 + 20) = 0;
*(_DWORD *)(a2 + 37592) = 0;
*(_DWORD *)(a2 + 37596) = a2 + 36968;
*(_DWORD *)(a1 + 8) = a2;
*(_DWORD *)a1 = 0;
*(_DWORD *)(a1 + 4) = 0;
These appear to me to be offsets in a struct, but some of the offsets make little sense, e.g. 36968
. I'm aware that it is quite difficult to be sure, but some pointers in the correct direction would be much appreciated :)
Assembly for those who want it :)
.text:004B0126 xor esi, esi
.text:004B0128 mov [ecx+10h], eax
.text:004B012B lea eax, [ecx+8]
.text:004B012E mov [ecx+9538h], eax
.text:004B0134 mov eax, [esp+4+arg_0]
.text:004B0138 lea edx, [ecx+9068h]
.text:004B013E mov [ecx+14h], esi
.text:004B0141 mov [ecx+92D8h], esi
.text:004B0147 mov [ecx+92DCh], edx
.text:004B014D mov [eax+8], ecx
.text:004B0150 mov [eax], esi
.text:004B0152 mov [eax+4], esi