ok, i figured out what i did wrong... what i am calling "object" is actually cggameobject and not cgobject :P
so the right vtable is .rdata:009F0504 - Anonymous - ypiTFJgE - Pastebin.com
and
11 .rdata:009F052C dd offset sub_5BB5C0
12 .rdata:009F0530 dd offset sub_5BB620
are indeed two function to get the position, whatever the reason is that it has two getposition functions...
and function 44 is OnRightClick
and function 54 looks fine, now i have to figure out why it doesn't work for me...
Code:
char *__thiscall sub_5BB810(int this)
{
int v1; // eax@1
char *result; // eax@2
v1 = *(_DWORD *)(this + 420);
if ( v1 )
result = *(char **)(v1 + 144);
else
result = &byte_9CE47F;
return result;
}
ok, i also solved this problem, if anybody else has the same problem:
although there is a check if v1 is valid it can happen that the returned pointer is invalid, that means you should validate it before dereferencing