I have a program which decompiles in Ghidra to include the line
temp_5f2f2f81bc = *(CPedIntelligence **)(&DAT_000010c0 + (longlong)pCVar2);
temp_5f2f2f81bc is a
pCVar2 is a
CPed has a
CPedIntelligence* located at offset
0x10c0. So this should decompile as
temp_5f2f2f81bc = pCVar2->intelligence;. Is there a way to tell Ghidra "no,
pCVar2 should not be cast to longlong?"
I've noticed this occurring other times as well, and it generally seems to be associated with a structure stored in a register (here,
pCVar2 is stored in
R13). In the function's local variables, though,
pCVar2 is listed as being stored in
HASH:5f32eb8... The register is never used in the function except as the storage for this
CPed*, so if I could forcibly tell the decompiler "this register has this type throughout the entire function" then that'd help. I tried using scripting to create a local variable stored in
R13, but the decompiler didn't pick up on it.