1

I hope there is a proper way to fix my issue.

Here's memory layout:

.data:004F3D10 char * * gTownObjNames dd offset aMage ; DATA XREF: townManager::SetupTown(void)+245↑r .data:004F3D10 dd offset aThie ; "mage" ... .data:004F3D10 dd offset aTvrn <<<SKIPPED>>> .data:004F3D10 dd offset aExt3 .data:004F3D90 ; signed __int8 gDwellingType[6][12] .data:004F3D90 signed char (* gDwellingType)[12] db 0, 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 255, 11, 12, 14, 15 .data:004F3D90 ; DATA XREF: recruitUnit::recruitUnit(town *,int,int)+49↑r .data:004F3D90 ; QuickViewRecruit(town *,int)+1C↑r ... .data:004F3D90 db 17, 19, 13, 255, 16, 18, 255, 255, 20, 21, 23, 25, 27 <<<SKIPPED>>> 

and the problematic instruction:

movsx eax, byte ptr [ecx+eax*4+4F3D7Dh] 

that was converted to

movsx eax, byte ptr (char * * gTownObjNames+6Dh)[ecx+eax*4] 

I guess IDA Pro chose gTownObjNames because 4F3D7Dh belongs to gTownObjNames. But I know for the fact that it always points to gDwellingType. Is it possible to change the mapped variable?

Maybe there is a way to use manual operand fix in Pseudocode window?

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.