I have a Ida decompiled function that invokes another function through a function pointer but I'm really confused how it calculates it's address. I'm new to hex-rays syntax.
int __fastcall SUB_XXXX(int a1)
{
int result; // r0
int (__fastcall *v3)(int); // r2
result = 0;
if ( *off_BD2561B0 )
{
v3 = *(int (__fastcall **)(int))(*off_BD2561B0 + 36);// off_BD2561B0 DCD dword_BD277D84
if ( v3 )
result = v3(a1);
}
return result;
}
So, v3 = dword_BD277D84 + 0x24 = 0xBD277DA8 Or v3 = ValueAt(dword_BD277D84) + 0x24 ?
I'm kinda confused with off_* and dword_* thing.